我有一个包含大型XML(大约10,000行)的列名XMLData。 以下是存储的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查询中删除多个节点?具体来说,我想删除Node DEF下的所有GHI节点。谢谢!
答案 0 :(得分:2)
对于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>