【问题标题】:sql + xquery to delete multiple parent nodessql + xquery 删除多个父节点
【发布时间】:2013-03-18 17:13:26
【问题描述】:

在下面的 xml 中,我有三个 5 /Item 元素,其中 4 个有一个 Blob 子元素。我想删除具有子 Blob 元素但仅在 Item/@Name 中包含文本“Blob”的元素。

<Items>
    <Item Name="Blob123">
        <Blob/>
    </Item>
    <Item Name="Blob124">
        <Blob/>
    </Item>
    <Item Name="Blob125">
        <Blob/>
    </Item>
    <Item Name="Blob126">
    </Item>
    <Item Name="Xyz126">
        <Blob/>
    </Item>
</Items>

此查询返回名为“Blob%”的 3 个 /Item 元素和一个子 /Blob 元素就可以了。

  select xmlVal.query('(/Items/Item[contains(@Name, "Blob")]/Blob/..)')

但是,当我尝试使用此 xquery 删除这些元素时:

  select xmlVal.modify('delete (/Items/Item[contains(@Name, "Blob")]/Blob/..)')

我明白了:XML 数据类型方法“修改”的使用不正确。在这种情况下需要一个非mutator方法。

我做错了什么。

【问题讨论】:

    标签: sql sql-server-2008 xpath xquery


    【解决方案1】:

    如果它对其他人有帮助,为了解决这个问题,我需要使用 update/set 并且还需要稍微更改 xpath

    更新表1 set xmlVal.modify('delete (/Items/Item[contains(@Name, "Blob")][Blob])')

    【讨论】:

      猜你喜欢
      • 2010-11-04
      • 2021-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多