sql - SQL Server xml 变量不是通过引用
问题描述
以下查询应将节点附加到现有 xml。基于输出 xml 变量实际上是新节点,而不是现有节点的引用。我可以使用参考变量吗?请告知:
declare @a_bo_key_xml xml='<r><items><item><key>k1</key><value>v1</value></item></items></r>'
Declare @rowsBOK xml=@a_bo_key_xml.query('/r/items/item')
select @rowsBOK.value('(*/key)[1]','varchar(100)'), @rowsBOK.value('(*/value)[1]','varchar(100)')
set @rowsBOK.modify('insert <added>aaa</added> as first into (*)[1]')
select cast(@a_bo_key_xml as varchar(max))
select cast(@rowsBOK as varchar(max))
output:
<r><items><item><key>k1</key><value>v1</value></item></items></r>
<item><added>aaa</added><key>k1</key><value>v1</value></item>
expected:
<r><items><item><added>aaa</added><key>k1</key><value>v1</value></item></items></r>
<item><added>aaa</added><key>k1</key><value>v1</value></item>
解决方案
XML 变量在重新分配时采用新的标识,两者之间没有联系。
直接修改@a_bo_key_xml
变量即可:
declare @a_bo_key_xml xml='<r><items><item><key>k1</key><value>v1</value></item></items></r>';
set @a_bo_key_xml.modify('insert <added>aaa</added> as first into (/r/items/item)[1]');
select @a_bo_key_xml;
推荐阅读
- netty - Netty SctpMultiChannel
- android - IONIC 3 android应用程序启动延迟
- authentication - Wireshark - 从连接的 AP 捕获 AUTH&ASSOC 数据包
- ios - 裁剪 UIImage 没有产生预期的作物 - 迅速?
- aws-glue - AWS Glue 作业 python 脚本
- java - 当用户单击卡片视图时,如何从 Firebase 实时数据库中删除卡片视图上显示的特定记录。
- python - 如何在不使用函数的情况下在 python 中打印名称的反面?
- android - 圆角 ExpandableListView
- javascript - 如何在 JavaScript 中使用模型数据:ASP.NET Core
- mariadb - MariaDB AUTO_INCREMENT 行为,同时设置键为负