sql-server - 使用 TSQL 从 XML 中删除具有特定值的节点

标签 sql-server xml tsql contains

我正在尝试解析一段 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/>元素的内容。

此处示例 http://msdn.microsoft.com/en-us/library/ms178026.aspx

关于sql-server - 使用 TSQL 从 XML 中删除具有特定值的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15071994/

相关文章:

mysql - 如何更新数据库中的日期间隔(Hibernate HQL)

sql-server - 合并语句错误调试

sql - 完全外连接仅采用左表(但没有 where 子句)

sql - 如何递归解析SQL语句中的数据

java - 使用 xml 配置的服务器以编程方式关闭 Jetty

php - 使用 DOMDocument 未使用 getElementsByTagName() 查找元素

java - 如何将 EditText 字段中的文本添加到 android studio 中的不同 TextView

sql - 使用不确定数量的参数时如何避免动态 SQL?

SQL JOIN 值小于或等于数字

sql - 从最后插入的行中选择 id