2011-12-21 11 views
3

私はXQUERYを学んでいて、私が思うことを達成しようとしています。私のT-SQLコードは次のとおりです。T-SQL、XQuery無効な列

DECLARE @XML xml 
set @xml = '<resultsets><AppVersion>13.0</AppVersion></resultsets>' 

-- Code below is wrong 
select 
ResultSets.AppVersion.query('AppVersion').value('.', 'varchar(100)') as AppVersion 
from @XML.nodes('/resultsets/AppVersion') ResultSets(AppVersion) 

私はその内部要素appversionをどのようにして照会するか正確には分かりません。私はエラーは発生していませんが、appversionのinner-element内にその13.0を返すことはできません。誰かが助けてくれますか?

答えて

2

AppVersionが多すぎます。これはあなたの13.0を返す:あなただけvalue、さらにqueryを必要としないそこからのよう

DECLARE @XML xml 
set @xml = '<resultsets><AppVersion>13.0</AppVersion></resultsets>' 

-- Code below is right 
select 
ResultSets.AppVersion.value('.', 'varchar(100)') as AppVersion 
from @XML.nodes('/resultsets/AppVersion') ResultSets(AppVersion) 

あなたnodes方法は、既に、AppVersionノードに降ります。

+0

これは完全に機能します。ありがとうございました! – ccdrm

2

結果として1行だけが必要な場合は、nodesを使用する必要はありません。

DECLARE @XML xml 
set @xml = '<resultsets><AppVersion>13.0</AppVersion></resultsets>' 

select @XML.value('(/resultsets/AppVersion)[1]', 'varchar(100)') as AppVersion 
+0

また、良い解決策。ありがとう! – ccdrm