2013-03-18 73 views
0

在下面的xml中我有三個5/Item元素,其中4個有一個Blob子元素。我想刪除具有子Blob元素的元素,但只有Item/@名稱中包含文本「Blob」的元素。sql + xquery刪除多個父節點

<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數據類型的方法「修改」。預計在這種情況下非增變方法。

我做錯了什麼。

回答

0

在情況下,它可以幫助別人,要解決這個問題,我需要使用update /套,也需要改變的XPath略有

更新表1 集xmlVal.modify('刪除(/項目/項目[含( @Name,「Blob」)] [Blob])')