gpt4 book ai didi

sql-server - 在 SQL 2005 中使用 XML.modify() 在多个 XML 节点中插入属性

转载 作者:数据小太阳 更新时间:2023-10-29 02:03:27 26 4
gpt4 key购买 nike

我有一个由单个选择语句创建的@XML 文档。

<root>
<node>
<node1>
<targetNode>
</targetNode>
</node1>
<node1>
<targetNode>
</targetNode>
</node1>
<node1>
<targetNode>
</targetNode>
</node1>
</node>
<node>
......
</node>
</root>

我想插入 xsi:nil 作为此文档的“targetNode”的属性。

@XML.modify( 'insert attribute xsi:nil {"true"} into (root/node/node1/targetNode) [1]') 

上面的代码会将属性插入到@XML 文档中targetNode 的第一次出现处。然而,insert 语句只能在单个节点上工作。有什么方法可以将此属性插入到@XML 文档中 targetNode 的所有实例中。

最佳答案

我在多节点DML操作中找到了一个简单而优雅的解决方案 http://blogs.msdn.com/b/denisruc/archive/2005/09/19/471562.aspx

思路是统计有多少个节点,一个一个修改:

DECLARE @iCount int
SET @iCount = @var.value('count(root/node/node1/targetNode)','int')

DECLARE @i int
SET @i = 1

WHILE (@i <= @iCount)
BEGIN
@xml.modify('insert attribute xsi:nil {"true"} into (root/node/node1/targetNode)[sql:variable("@i")][1]')
SET @i = @i + 1
END

关于sql-server - 在 SQL 2005 中使用 XML.modify() 在多个 XML 节点中插入属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/536597/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com