TSQL - 解析XML帮助,搜索特定值

时间:2012-07-17 21:34:50

标签: sql xml tsql xml-parsing

任何人都可以帮助我使用正确的TSQL来解析以下xml。假设我想找到名称元素值为“y”的项目,但我想得到“value”元素的值,在下面的例子中为“2”。

Declare @XML xml

set @XML ='
<Test>
<items>
<item>
<name>x</name>
<value>1</value>
</item>
<item>
<name>y</name>
<value>2</value>
</item>
</items>
</Test>'

--i am stuck here
selecct @XML.value('Test/items/....")

搜索“y”,结果为“2”。

这可能吗?

有人可以帮助解决语法问题吗?谢谢!

2 个答案:

答案 0 :(得分:0)

试试这个

 select @xml.value('((test/items/item)[2]/value)[1]', 'nvarchar(max)')

故障:

(test/items/item)[2]  -- find the second instance of an item tag under a test tag

((test/items/item)[2]/value)[1] -- then find the first instance of a value tag under that

值函数不能给出任何甚至在理论上可以返回多个值的表达式。如果有疑问,请在(some-expression-here)[1]之间加上括号。

要查找与给定名称对应的值:

 select @xml.value('((test/items/item)[name="y"][1]/value)[1]', 'nvarchar(max)')

答案 1 :(得分:0)

您可能需要使用XQuery(旨在查询XML数据)。 TSQL支持它的一个子集:

http://msdn.microsoft.com/en-us/library/ms189075%28SQL.90%29.aspx