2011-07-07 11 views
0

私はSQLに照会し、各値の行を返す必要がXML変数を有する:SQL解析XMLストリング

declare @info xml 
select @info = '<parameters><locality_id>303</locality_id><locality_id>PC_303</locality_id></parameters>' 

は、(ノードが1つの以上locality_id値を有することができ、そこパラメータ

:上記の場合2) 出力は、私は限り、結果として2つの行を取得するようになっても、値が正常に来ていない、それだけで二回最初の値を示して

locality_id 
303 
PC_303 

する必要があります

declare @info xml 
select @info = '<parameters><locality_id>303</locality_id><locality_id>PC_303</locality_id></parameters>' 
select feed.x.value('(//locality_id)[1]','NVARCHAR(255)') 
from @info.nodes('//parameters/locality_id') feed(x) 

私はこれに必要なものをどのように得ることができますか?

答えて

3

問題は(//locality_id)[1]で、「どのレベルでも最初のlocality_idを取得してください」と言っています。 nodesメソッドで必要なノードを既に選択しているので、.を使用して現在のコンテキストから値を選択できます。

declare @info xml 
select @info = '<parameters><locality_id>303</locality_id><locality_id>PC_303</locality_id></parameters>' 
select feed.x.value('.','NVARCHAR(255)') 
from @info.nodes('//parameters/locality_id') feed(x) 
+0

パーフェクト。本当にありがとう。これはちょうど私が必要とするように働いた – Nathan