2011-12-21 2 views
3

저는 XQUERY를 배우면서 간단하다고 생각했던 것을 성취하려고합니다. 내 T-SQL 코드는 다음과 같습니다.T-SQL, XQuery Invalid Column

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 내부 요소에서 13.0을 반환 할 수 없습니다. 누군가 도와 주실 수 있습니까?

답변

2

AppVersion이 너무 많습니다. 이것은 반환하여 13.0 : 거기에서 당신은 더 query, 단지 value을 필요가 없습니다

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

결과로 한 행만 필요하면 nodes을 사용할 필요가 없습니다.

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

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

또한 좋은 해결책입니다. 감사! – ccdrm