【问题标题】:XQuery: Delete specific parent node based on child valueXQuery:根据子值删除特定的父节点
【发布时间】:2017-05-11 12:43:23
【问题描述】:

我正在尝试根据子节点的值从 xml 文档中删除父节点

这是我正在查看的一个非常简化的示例

<root>
  <someactivity>
    <id>123456789</id>
  </someactivity>
</root>

我希望能够使用 SQL Server / XQuery 做的是通过在子节点“id”中搜索“123456789”的 id 来删除整个“someactivity”节点及其内容。

到目前为止,我有这样的东西:-

update mytablecontainingXMLcolumns
  set xmldata.modify('delete //someactivity/id[text()][contains(.,"123456789")]')

但它没有像我预期的那样工作 - 似乎只是删除了“id”节点。我被困在这个阶段。任何帮助/指导将不胜感激。

【问题讨论】:

    标签: sql xquery xquery-sql


    【解决方案1】:

    修改您的 XPath/XQuery 以选择父元素 someactivity 而不是 id

    update mytablecontainingXMLcolumns
      set xmldata.modify('delete //someactivity[contains(id,"123456789")]')
    

    或者,如果一个someactivity 中可以有多个id 元素,并且如果至少有一个id 匹配,您想删除父元素:

    update mytablecontainingXMLcolumns
      set xmldata.modify('delete //someactivity[id[contains(.,"123456789")]]')
    

    【讨论】:

      猜你喜欢
      • 2021-08-19
      • 2021-05-17
      • 1970-01-01
      • 2013-02-11
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 2017-07-11
      相关资源
      最近更新 更多