2013-02-25 18 views
6

XMLを解析して特定の値を含むノードを削除しようとしています。値が正確であれば削除する方法を知っていますが、 "contains"のようなものを使用したいと思います。TSQLを使用して特定の値のXMLをノードから削除する

これは正確に削除するために動作します:

update @XML set data.modify('delete //Message[text() = "customer has deleted their account"]') 

しかし、私は「メッセージ」ノードはただのテキストが含まれている場所を削除する、のようなもの:

update @XML set data.modify('delete //Message[contains(text(), "customer")]') 

ただし、これはエラーを返します:

XQuery [@XML.data.modify()]: 'contains()' requires a singleton (or empty sequence), found operand of type 'xdt:untypedAtomic *' 

答えて

15

お試し

要素の内容を削除する

update @XML set data.modify('delete //Message//text()[contains(.,"customer")]') 

<message/>要素とその内容を削除する

update @XML set data.modify('delete //Message[text()][contains(.,"customer")]') 

ここで例http://msdn.microsoft.com/en-us/library/ms178026.aspx

+0

知事。私は非常に似たようなものになったが、それは2つのステップだった。ノードの内容を削除し、空のノードを削除します。これははるかにエレガントです。 –

関連する問題