#sql #sql_server #xml #запрос
Имеется кострукция вида:Кол-во элементов setting не известно. То есть в каждой записи может присутствовать от 0 до n данных элементов. Я понимаю, как вывести единичные элменты. Например, id: SELECT column.value('(first/id) [1]', 'integer') AS 'id' FROM table Но вот с множественными элементами возникает вопрос. Требуется чтобы при запросе я получил список вида: id | setting id | setting .... ... ... ... ...
Ответы
Ответ 1
DECLARE @Test XML SET @Test = CAST( '' AS XML) 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) 100 p1 p2 2 3
Комментариев нет:
Отправить комментарий