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