我正在尝试解析一段 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 *'
最佳答案
尝试
update @XML set data.modify('delete //Message[text()][contains(.,"customer")]')
删除<message/>
元素及其内容
update @XML set data.modify('delete //Message//text()[contains(.,"customer")]')
删除<message/>
元素的内容。
关于sql-server - 使用 TSQL 从 XML 中删除具有特定值的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15071994/