Giả sử tôi có một bảng SQL Server 2005 với một cột xml chứa các giá trị sau:SQL Server XML Cột tồn tại() truy vấn
CREATE TABLE XmlTest (
XMLid int,
Data xml)
INSERT XMLTest
VALUES (1 , '<data><item><type v="1" /><value v="12.56" /></item><item><type v="3" /><value v="DEBIT" /></item></data>')
INSERT XMLTest
VALUES (2 , '<data><item><type v="1" /><value v="99.22" /></item><item><type v="3" /><value v="CREDIT" /></item></data>')
INSERT XMLTest
VALUES (3 , '<data><item><type v="3" /><value v="12.56" /></item><item><type v="1" /><value v="DEBIT" /></item></data>')
Tôi muốn thử nghiệm cho sự tồn tại của các yếu tố mục với một loại v = "3" VÀ giá trị v = "DEBIT".
Tôi đang sử dụng tồn tại() chức năng như sau:
SELECT *
FROM XmlTest
WHERE Data.exist('/data/item/type[@v=''3'']') = 1
AND Data.exist('/data/item/value[@v=''DEBIT'']') = 1
Tuy nhiên điều này mang lại cho tôi trở lại hàng với XMLid 1 và 3.
bất cứ ai có thể phác thảo những gì thay đổi tôi cần phải thực hiện để tôi ĐÂU mệnh đề để trả về bản ghi chỉ có một mục có giá trị nút v là 3 và giá trị nút giá trị v là "DEBIT"? ví dụ: chỉ ghi với XMLid 1
Cảm ơn
+1 darn! Tôi vừa mới đưa ra giải pháp này sau một chút nghiên cứu .... chỉ để thấy bạn đã nhanh hơn 6 phút ..... ARGH! :-) Cuộc gọi tốt, mặc dù! –
Hoàn hảo. Cảm ơn Matt & Marc_s đã hỗ trợ bạn. – doshea