Как переименовать корневой элемент XML в SQL - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть переменная xml, подобная этой:

<root a1="3794" a2="7">
  <price p1="8805" p2="5" p3="259.9000" />
  <price p1="8578" p2="5" p3="100.0000" />
</root>

Я хочу переименовать root в discount, вывод должен быть:

<discount a1="3794" a2="7">
  <price p1="8805" p2="5" p3="259.9000" />
  <price p1="8578" p2="5" p3="100.0000" />
</discount>

У кого-нибудь естьлучшее решение для этого, сохраняя переменную как XML?

Спасибо

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Это на самом деле не переименование элемента.Он создает новый XML с новым именем корневого элемента.

declare @X xml = 
'<root a1="3794" a2="7">
  <price p1="8805" p2="5" p3="259.9000" />
  <price p1="8578" p2="5" p3="100.0000" />
</root>';

select @X.query('element discount {root/@*, /root/*}');
0 голосов
/ 21 сентября 2018

Самый простой будет:

select cast(replace(cast(myXmlCol as varchar(max)), 'root', 'discount') as xml)
from my_table
...