2017-05-11 122 views
1

我試圖刪除XML文檔基於一個子節點的值父節點的XQuery:刪除根據孩子的具體價值父節點

下面是一個非常簡化的例子就是我要找的

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

我想怎麼能夠使用SQL Server做/ XQuery是通過搜索的「123456789」的ID在子節點「ID」刪除整個「someactivity」節點及其內容。

到目前爲止,我有這樣的事情: -

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

,但它不工作如我所料 - 只是好像是刪除「身份證」節點。我被困在這個階段。任何幫助/指導將不勝感激。

回答

0

修改您的XPath/XQuery來進行選擇父someactivity元素,而不是id

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

,或者如果可以有多個內的一個someactivityid元素,你想刪除父如果,至少,一個id相匹配的項目:

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