7
假設我有一個SQL Server 2005的表,用含有如下值的XML列:SQL Server的XML列存在()的查詢
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>')
我想測試項目元素與V型是否存在等= 「3」和值v =「DEBIT」。
我使用的是存在()函數如下:
SELECT *
FROM XmlTest
WHERE Data.exist('/data/item/type[@v=''3'']') = 1
AND Data.exist('/data/item/value[@v=''DEBIT'']') = 1
然而,這使我回行與XMLid 1和3
任何人都可以說明我需要什麼樣的變化,使我在哪裏子句只返回具有類型節點v值爲3且值節點v值爲「DEBIT」的項目的記錄?即,僅在XMLid 1
記錄感謝
+1 DARN!我經過一番研究後纔想出了這個解決方案....只是爲了找到你已經快了6分鐘了..... ARGH! :-)但是,好的通話! – 2010-06-24 11:07:30
完美。感謝Matt&Marc_s的幫助。 – doshea 2010-06-24 12:04:40