Имеется кострукция вида:
Кол-во элементов setting не известно. То есть в каждой записи может присутствовать от 0 до n данных элементов.
Я понимаю, как вывести единичные элменты. Например, id
SELECT column.value('(first/id) [1]', 'integer') AS 'id' FROM table
Но вот с множественными элементами возникает вопрос.
Требуется чтобы при запросе я получил список вида:
id | setting
id | setting
....
Ответ
DECLARE @Test XML
SET @Test = CAST(
'
SELECT
t.f.value('(first/id)[1]', 'integer') AS Id,
n.s.value('.[1]', 'varchar(100)') AS params,
n.s.value('(./param1)[1]', 'varchar(100)') AS param1,
n.s.value('(./param2)[1]', 'varchar(100)') AS param2
FROM (SELECT @Test AS f) t
CROSS APPLY f.nodes('first/settings/setting/.[1]') n(s)
UPD: Для приведенного примера выбор из таблицы:
SELECT
t.column.value('(first/id)[1]', 'integer') AS Id,
nodes.setting.value('.[1]', 'varchar(100)')
FROM table t
CROSS APPLY t.column.nodes('first/settings/setting/.[1]') nodes(setting)
Комментариев нет:
Отправить комментарий