sql - 如何从 SQL 中的 XML 变量中删除包含多个属性的节点
问题描述
我有一些 XML 被传递到如下所示的 SQL 存储过程中:
<root>
<category>
<property id="blah" otherID="blahblah" year="2015">
<property id="blah" otherID="notBlahBlah" year="2015">
</category>
</root>
我想使用基于多个节点属性的 SQL 从中删除一个属性节点。例如,假设我想删除 id="blah" 和 otherID="blahblah" 的属性。我怎么能这样做?谢谢你。
这是我迄今为止根据阅读一些 XQUERY 文档对如何执行此操作的最佳猜测得出的代码,但它无法正常工作:
DECLARE @XML AS XML
SET @XML = '<root>
<category>
<property id="blah" otherID="blahblah" year="2015">
<property id="blah" otherID="notBlahBlah" year="2015">
</category>
</root>'
UPDATE @XML.nodes('/root/category/property')
SET data.modify('delete /root/category/property[id="blah", otherID="blahblah"]')
解决方案
DECLARE @XML AS XML
SET @XML = '
<root>
<category>
<property id="blah" otherID="blahblah" year="2015"/>
<property id="blah" otherID="notblahblah" year="2015"/>
</category>
</root>'
SET @XML.modify('delete /root/category/property[@id="blah" and @otherID="blahblah"]')
SELECT @XML
推荐阅读
- java - 用 Java 连接本地网络之外的计算机
- json - 在 React Native 中创建动态图库,但图像不会出现
- javascript - 如何在 google-apps-script Web 应用程序的 for-loop 函数中使用 async/await 和 FileReader?
- javascript - javascript async await 使用 Promise 提交带有 onsubmit 的表单
- symfony - 在 Symfony 4 中填充所有必需参数
- google-app-engine - 允许用户直接发布到 Google Cloud Storage?
- c# - 在 asp.net 核心中使用 NVarChar
- python - 自动检测二维数组/热图中的集群
- c++ - 如何修复此程序中的分段错误
- android - 我打印数字,但我有很多逗号