在下面的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元素,并且使用child / Blob元素就可以了。
select xmlVal.query('(/Items/Item[contains(@Name, "Blob")]/Blob/..)')
但是,当我尝试使用此xquery删除这些元素时:
select xmlVal.modify('delete (/Items/Item[contains(@Name, "Blob")]/Blob/..)')
我得到:错误地使用XML数据类型方法'modify'。在这种情况下,预计会有一种非变异方法。
我做错了什么。
答案 0 :(得分:0)
如果它有助于其他人,要解决这个问题,我需要使用更新/设置,还需要稍微更改xpath
更新table1 set xmlVal.modify('delete(/ Items / Item [contains(@Name,“Blob”)] [Blob])')