2011-03-14 92 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