我的表中有一个 XML 列。 XML 结构是这样的:
<Nodes>
<Node>
<Name>a</Name>
</Node>
<Node>
<Name>a</Name>
</Node>
</Nodes>
我正在尝试插入两个节点: 我试过这个:
SET @xml.modify('
insert <Phone>111</Phone>
into (/Nodes/Node)[1]')
但这只会在第一次出现时插入电话。
最佳答案
不幸的是,你不能更新xml内的多个节点,你可以使用循环:
select @i = @xml.value('count(Nodes/Node)', 'int')
while @i > 0
begin
set @xml.modify('insert <Phone>111</Phone> into (/Nodes/Node)[sql:variable("@i")][1]')
set @i = @i - 1
end
select @xml
或者你可以像这样重建你的xml:
select
111 as Phone,
t.c.value('Name[1]', 'nvarchar(max)') as Name
from @xml.nodes('Nodes/Node') as t(c)
for xml path('Node'), root('Nodes')
关于sql - 多次插入 XML 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19110272/