请在下面找到脚本代码段
declare @xml xml
set @xml = '<Message>
<MessageData>
<MessageDataSet >
<id> 1 </id>
<name>Vasan</name>
</MessageDataSet>
<MessageDataSet >
<id> 2 </id>
<name>Vivek</name>
</MessageDataSet>
</MessageData>
</Message>'
SELECT
t.c.value('(id)[1]','varchar(100)')
from
@xml.nodes('/Message/MessageData/MessageDataSet') AS t(c)
我得到所有'id'节点值,即'1'和&amp; '2'。我的需要,我必须直接获取第二个'id'的值,在这种情况下。它将是'2'。任何人都可以让我知道Select查询语法相同吗?感谢。
答案 0 :(得分:1)
这个怎么样:
SELECT
@xml.value('(/Message/MessageData/MessageDataSet/id)[2]','varchar(100)')
返回2
作为我的值。这样就抓住了XML中的第二个条目 - 如果它不在那里,你将得到NULL。
另外:为什么将此转换为varchar(100)
- 这里不会int
更合适的类型?