1

请在下面的脚本片段中找到

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”和“2”。我的需要,我必须直接获取第二个'id'的值,在这种情况下,它将是'2'。任何人都可以让我知道相同的 Select 查询语法吗?谢谢。

4

1 回答 1

1

这个怎么样:

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

2作为我的值返回。这将抓取该 XML 中的第二个条目 - 如果它不存在,您将返回 NULL。

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

于 2012-08-16T15:06:08.420 回答