Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как транспонировать атрибуты в колонки  [new]
xml000001
Guest
дано

<z @a1 ="a1val" @a2="a2val" />

получить

<a1>a1val</a1>
<a2>a2val</a2>


мысли приходят использовать flwor, но не помню как в for перечислить все атрибуты узла
19 ноя 14, 13:33    [16871410]     Ответить | Цитировать Сообщить модератору
 Re: как транспонировать атрибуты в колонки  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
xml000001
но не помню как в for перечислить все атрибуты узла


как-то так:
z/@*
19 ноя 14, 13:36    [16871448]     Ответить | Цитировать Сообщить модератору
 Re: как транспонировать атрибуты в колонки  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
но так, чтоб произвольные имена атрибутов в произвольные имена тегов преобразовать - не получится. не в t-sql, по крайней мере.
19 ноя 14, 13:39    [16871475]     Ответить | Цитировать Сообщить модератору
 Re: как транспонировать атрибуты в колонки  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
declare @x xml
set @x='<ROOT><a a1="test">111</a></ROOT>'


select 
	x.i.value('local-name(.)','varchar(100)') as colname,
	x.i.value('.','varchar(100)') as data
from @x.nodes('/ROOT/a/@*') as x(i)
19 ноя 14, 13:48    [16871542]     Ответить | Цитировать Сообщить модератору
 Re: как транспонировать атрибуты в колонки  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
у вас xml невалидный, атрибут не может начинаться с @
19 ноя 14, 13:51    [16871573]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить