XQuery:根据子值

时间:2017-05-11 12:43:23

标签: sql xquery xquery-sql

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

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

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

我希望能够使用SQL Server / XQuery做的是删除整个&#39; someactivity&#39;节点及其内容通过搜索&#39; 123456789&#39;的ID在子节点&#39; id&#39;。

到目前为止,我有这样的事情: -

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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