2013-02-25 112 views
6

का उपयोग कर एक्सएमएल से कुछ मूल्य के साथ नोड्स हटाएं मैं एक्सएमएल के एक टुकड़े को पार्स करने और कुछ मान रखने वाले नोड्स को हटाने की कोशिश कर रहा हूं। मुझे पता है कि अगर मूल्य सटीक है तो उन्हें कैसे हटाया जाए, लेकिन मैं कुछ "शामिल" की तरह कुछ उपयोग करना चाहता हूं।टीएसक्यूएल

यह ठीक नष्ट करने के लिए काम करता है:

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")]') 

<message/> तत्व की सामग्री को नष्ट करने के लिए नष्ट करने के लिए।

यहाँ उदाहरण http://msdn.microsoft.com/en-us/library/ms178026.aspx

+0

प्रधान। मुझे कुछ बहुत ही मिलना होगा, लेकिन यह 2 कदम था। नोड की सामग्री हटाएं, और फिर खाली नोड्स हटाएं। यह बहुत अधिक सुरुचिपूर्ण है। –