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」を取得しています。2 番目の「id」の値を直接取得する必要があります。この場合は「2」になります。誰かが同じものを選択するクエリの構文を教えてもらえますか? ありがとう。

4

1 に答える 1

1

これはどう:

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

2私にとっての価値として返します。これにより、その XML 内の正確に 2 番目のエントリが取得されます。そこにない場合は、NULL が返されます。

また、なぜこれをvarchar(100)-に変換するintのが適切なタイプではないのでしょうか??

于 2012-08-16T15:06:08.420 に答える