如何重命名 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/*}');
我有一个这样的 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/*}');