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

标签 sql xml sql-server-2008 tsql

我有一个名为 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,您只需使用 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

结果:

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

关于sql - 如何使用 SQL 删除 XML 中的多个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31560397/

相关文章:

sql - TOP 减慢查询速度

sql - SQLite解析TEXT列以及日期信息

MySQL:从 INNER JOIN 内部分组

mysql - #1111在SQL中无效使用Group函数:概念?

c# - 使用XmlReader时将ReadEndElement与ReadStartElement匹配

php - 使用MS sql数据库时记录错误

c# - .Net发出问题时,BULK INSERT命令是否异步?

java - 如何为HTML字符串进行XSL模板匹配

java - 在 Android 中将 Json 转换为 Xml

sql - 如何根据日期和类型分组