多次插入XML数据

时间:2013-10-01 07:21:11

标签: sql sql-server xml xquery sqlxml

我的表中有一个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]') 

但是这会在第一次出现时插入Phone。

1 个答案:

答案 0 :(得分:2)

遗憾的是,你无法更新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 fiddle demo