T-SQL, неверный столбец XQuery

Я только изучаю XQUERY и пытаюсь сделать то, что, как мне казалось, будет очень просто. Вот мой код T-SQL:

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. Я не получаю никаких ошибок, но я не могу вернуть этот 13.0 во внутреннем элементе appversion. Может кто-нибудь помочь?


person ccdrm    schedule 21.12.2011    source источник


Ответы (2)


У вас AppVersion слишком много. Это возвращает ваш 13.0 :

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, поэтому вам не нужен дополнительный query, только value.

person AakashM    schedule 21.12.2011

Если вам нужна только одна строка, в результате нет необходимости использовать nodes.

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

select @XML.value('(/resultsets/AppVersion)[1]', 'varchar(100)') as AppVersion
person Mikael Eriksson    schedule 21.12.2011