Страницы

Поиск по вопросам

четверг, 9 января 2020 г.

Запрос к XML в mssql

#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( ' 100 MyObject p1 p2 2 3 ' 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)

Комментариев нет:

Отправить комментарий