SQL + xquery删除多个父节点



在下面的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方法。

我做错了什么

为了帮助其他人,我需要使用update/set来修复这个问题,并且还需要稍微更改xpath

更新表设置xmlVal。修改("删除(/项目/项目(包含(@ name,"Blob")](Blob))")

最新更新