我有一个名为 XMLData 的列,其中包含大型 XML(大约 10,000 行)。 下面是存储的 XML 类型。
<ABC>
<DEF>
<GHI>
<JKL>value1</JKL>
..
</GHI>
<GHI>
<JKL>value2</JKL>
..
</GHI>
<GHI>
<JKL>value3</JKL>
..
</GHI>
..
..
<GHI>
<JKL>valueN</JKL>
..
</GHI>
<OtherNodes>
<OtherNodes1>
.
.
.
</DEF>
</ABC>
有没有办法在SQL查询中删除多个节点?具体来说,我想删除节点 DEF 下的所有 GHI 节点。谢谢!!
最佳答案
对于 SQL Server,您只需使用 modify
与 delete
:
declare @x xml = '<ABC>
<DEF>
<GHI>
<JKL>value1</JKL>
</GHI>
<GHI>
<JKL>value2</JKL>
</GHI>
<GHI>
<JKL>value3</JKL>
</GHI>
<GHI>
<JKL>valueN</JKL>
</GHI>
<OtherNodes/>
<OtherNodes1/>
</DEF>
</ABC>'
set @x.modify('delete /ABC/DEF/GHI')
select @x
结果:
<ABC><DEF><OtherNodes /><OtherNodes1 /></DEF></ABC>
关于sql - 如何使用 SQL 删除 XML 中的多个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31560397/