2011-03-14 93 views
0

我有例如XML在表列中的一个:在SQL使用XQuery修改XML节点值[SQL服务器]

​​

我如何替换节点的值转换成类似的东西:

<Root> 
    <A> 
     <E>e</E> 
     <F>f</F> 
    </A> 
    <B>b</B> 
</Root> 

我尝试以下解决方案

DECLARE @var varchar(100); 
SET @var = '<E>e</E><F>f</F>' 
SET @xml.modify('replace value of (/Root/A/text())[1] with sql:variable("@var")'); 

,但它没有工作...

关于

+0

如果这是SQL-Server中,那么它是不是一个XQuery更新的问题,但XML数据修改语言([XML DML(http://msdn.microsoft.com/en-us/library/ms177454.aspx )) – 2011-03-14 13:47:11

+0

是的,它是Sql Server – rysiard 2011-03-14 13:52:32

回答

1

我不认为有可能用replace来代替节点,只有值。 您可以使用delete,然后使用insert

declare @xml as xml = ' 
<Root> 
    <A> 
    <C>c</C> 
    <D>d</D> 
    </A> 
    <B>b</B> 
</Root>' 

declare @var xml 
set @var = '<E>e</E><F>f</F>' 

set @xml.modify('delete /Root/A/*') 
set @xml.modify('insert sql:variable("@var") into (/Root/A)[1]') 

select @xml