如何重命名 SQL 中的 xml 根元素

How to rename the xml root element in SQL

我有一个这样的 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?

谢谢

最简单的是:

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

这并不是真正重命名元素。它正在创建一个具有新根元素名称的新 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/*}');