Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
cha0ss Member Откуда: г. Димитровград, ООО "АИС Город" Сообщений: 144 |
Здравствуйте, подскажите как реализовать запрос в sql для получения наименования тега, из которого происходит выборка. На примере: DECLARE @data VARCHAR(200), @dataXml xml SELECT @data = '<data><t1><item>11</item></t1><t2><item>22</item></t2></data>' SELECT @dataXml = CAST(@data AS xml) SELECT T.d.value('(item)[1]', 'varchar(100)') [item] FROM @dataXml.nodes('(/data/t1,/data/t2)') T(d) --необходимо вывести --item type --11 t1 --22 t2 Понимаю, что можно разделить на 2 запроса, проблема в том, что у меня этих t1, t2, tn очень много, можно ли как-то реализовать в одном обращении к xml данным? |
15 ноя 14, 10:52 [16850501] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9687 |
SELECT T.d.value('(item)[1]', 'varchar(100)') [item], cast(T.d.query('local-name(.)') as nvarchar(100)) as [type] FROM @dataXml.nodes('(/data/t1,/data/t2)') T(d) |
15 ноя 14, 11:20 [16850539] Ответить | Цитировать Сообщить модератору |
cha0ss Member Откуда: г. Димитровград, ООО "АИС Город" Сообщений: 144 |
invm, большое спасибо, все работает |
15 ноя 14, 11:38 [16850591] Ответить | Цитировать Сообщить модератору |
LexusR Member Откуда: Novosibirsk Сообщений: 1887 |
если ...проблема в том, что у меня этих t1, t2, tn очень много, то не надо писать nodes('(/data/t1,/data/t2)') DECLARE @data VARCHAR(200), @dataXml xml SELECT @data = '<data><t1><item>11</item></t1><t2><item>22</item></t2><tn><item>9999</item></tn></data>' SELECT @dataXml = CAST(@data AS xml) --SELECT -- T.d.value('(item)[1]', 'varchar(100)') [item] --FROM @dataXml.nodes('(/data/t1,/data/t2)') T(d) SELECT T.d.value('(item)[1]', 'varchar(100)') [item], cast(T.d.query('local-name(.)') as nvarchar(100)) as [type] FROM @dataXml.nodes('/data/node()') T(d) |
17 ноя 14, 07:55 [16856216] Ответить | Цитировать Сообщить модератору |
cha0ss Member Откуда: г. Димитровград, ООО "АИС Город" Сообщений: 144 |
LexusR, еще лучше, всем большое спасибо |
17 ноя 14, 08:19 [16856245] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |