SQLXML替换元素
请帮忙!是否可以用其他元素替换sql数据库xml字段中的元素。我已尝试使用的.modifyreplace值,但我只能替换元素中的文本,而不能替换节点中的文本 最后,我尝试更新一个可能包含或不包含其他元素的元素,在XML字段中使用另一个可能具有相同名称的元素。我正在使用SQLServer2008 例如: 将替换为: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>
<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>