2011-10-13 56 views
0

我已經有了一些代碼,它將現有項目的值的新xml標記添加到表MyTable的My MyColumn列中。更改xml列中標記的值

UPDATE SET MyTable的MyColumn.modify( '插入元件的newitem {/ rootElement的/ ExistingItem /節點()}後(/ rootElement的/ ExistingItem)[1]')

我想要做的是編輯該值呈現爲xpath表達式。 假設我在ExistingItem元素中有「Test」的值。 我想在我的NewItem元素中有「測試其他東西」。

我該怎麼辦?

回答

1

有點麻煩的解決方案,如果簡單的東西不上去:

--sample data 
declare @t table 
(
    col xml 
) 

insert into @t select '<RootElement><ExistingItem>Test</ExistingItem></RootElement>' 

--solution 
--read existing element into a variable 
declare @str varchar(50) 
select @str = 'something ' + cast(t.c.query('data(.)') as varchar) + ' else' 
from @t cross apply col.nodes('(/RootElement/ExistingItem)[1]') t(c) 
--insert new element with the value of the variable 
update @t set col.modify('insert element NewItem {sql:variable("@str")} after (/RootElement/ExistingItem)[1]') 
select * from @t