SQL-синтаксический анализ строки XML в строки таблицы - PullRequest
0 голосов
/ 07 июля 2011

У меня есть переменная XML, которую мне нужно запросить в SQL и вернуть строку для каждого значения:

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

Там узел параметров может иметь 1 или более значений locality_id (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)

Как я могу получить то, что нам нужно для этого?

1 Ответ

3 голосов
/ 07 июля 2011

Проблема в (//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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...