sql server xml解析

时间:2012-08-16 14:53:02

标签: xml sql-server-2008 xml-parsing

请在下面找到脚本代码段

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查询语法相同吗?感谢。

1 个答案:

答案 0 :(得分:1)

这个怎么样:

SELECT
    @xml.value('(/Message/MessageData/MessageDataSet/id)[2]','varchar(100)')

返回2作为我的值。这样就抓住了XML中的第二个条目 - 如果它不在那里,你将得到NULL。

另外:为什么将此转换为varchar(100) - 这里不会int更合适的类型?