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

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

3 голосов
/ 21 декабря 2011

Я просто изучаю 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. Может кто-нибудь помочь, пожалуйста?

Ответы [ 2 ]

2 голосов
/ 21 декабря 2011

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

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

select @XML.value('(/resultsets/AppVersion)[1]', 'varchar(100)') as AppVersion
2 голосов
/ 21 декабря 2011

У вас есть один 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.

...