简体   繁体   English

如何使用SQL删除XML中的多个节点

[英]How to delete multiple nodes in XML using SQL

I have a column name XMLData which contain large XML (around 10,000 lines). 我有一个列名XMLData包含大型XML(大约10,000行)。 Below is the type of XML stored. 以下是存储的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>

Is there a way to delete multiple nodes in SQL query? 有没有办法在SQL查询中删除多个节点? Specifically, I want to delete all GHI nodes under the Node DEF. 具体来说,我想删除Node DEF下的所有GHI节点。 Thanks!! 谢谢!!

For SQL Server, you'd just use modify with delete : 对于SQL Server,你只需要使用modifydelete

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

Result: 结果:

<ABC><DEF><OtherNodes /><OtherNodes1 /></DEF></ABC>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM