SQLXML替换元素

SQLXML替换元素,sql,xml,sql-server-2008,xpath,xquery,Sql,Xml,Sql Server 2008,Xpath,Xquery,请帮忙!是否可以用其他元素替换sql数据库xml字段中的元素。我已尝试使用的.modifyreplace值,但我只能替换元素中的文本,而不能替换节点中的文本 最后,我尝试更新一个可能包含或不包含其他元素的元素,在XML字段中使用另一个可能具有相同名称的元素。我正在使用SQLServer2008 例如: 将替换为: <Root> <SubVERSION2> <Value1> </Value1> <Value2>

请帮忙!是否可以用其他元素替换sql数据库xml字段中的元素。我已尝试使用的.modifyreplace值,但我只能替换元素中的文本,而不能替换节点中的文本

最后,我尝试更新一个可能包含或不包含其他元素的元素,在XML字段中使用另一个可能具有相同名称的元素。我正在使用SQLServer2008

例如:

将替换为:

<Root>
  <SubVERSION2>
    <Value1>
    </Value1>
    <Value2>
    </Value2>
    <Value3>
    </Value3>
  </SubVERSION2>
</Root>

任何帮助都将不胜感激

您可以重新创建XML:

declare @x xml = '<Root>
  <Sub>
    <Value1>1
    </Value1>
    <Value2>2
    </Value2>
    <Value3>3
    </Value3>
  </Sub>
</Root>'

select cast(('<Root>' +
    cast(
    (
        select t.c.query('.')
        from @x.nodes('Root/Sub/*') t(c)
        for xml path(''), root('SubVERSION2')
    ) as nvarchar(max)) + '</Root>') as xml)
产生所需的输出:

<Root>
  <SubVERSION2>
    <Value1>1
    </Value1>
    <Value2>2
    </Value2>
    <Value3>3
    </Value3>
  </SubVERSION2>
</Root>
结果:

<Root>
  <SubVERSION2>
    <Value1 />
    <Value2 />
    <Value3 />
  </SubVERSION2>
</Root>
declare @T table(XMLCol xml)

insert into @T values ('
<Root>
  <Sub>
    <Value1></Value1>
    <Value2></Value2>
    <Value3></Value3>
  </Sub>
</Root>')

update @T set
  XMLCol = XMLCol.query('for $s in Root/Sub
                         return
                           <Root>
                             <SubVERSION2>
                               { $s/* }
                             </SubVERSION2>
                           </Root>')
<Root>
  <SubVERSION2>
    <Value1 />
    <Value2 />
    <Value3 />
  </SubVERSION2>
</Root>