任何人都可以帮助我使用正确的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”。
这可能吗?
有人可以帮助解决语法问题吗?谢谢!
答案 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