изменить значение тега в столбце xml - PullRequest
0 голосов
/ 13 октября 2011

У меня есть код, который добавляет новый тег xml со значением существующего элемента в мой столбец XML MyColumn в таблице MyTable.

ОБНОВЛЕНИЕ MyTable SET MyColumn.modify ('вставить элемент NewItem {/ RootElement / ExistingItem / node ()} после (/ RootElement / ExistingItem) [1]')

Что я хочу сделать, это отредактировать это значение, представленное как выражение xpath. Допустим, у меня есть значение «Test» в моем элементе ExistingItem. И я хочу, чтобы в моем элементе NewItem было «что-то еще».

Что мне делать?

1 Ответ

1 голос
/ 13 октября 2011

Довольно громоздкое решение, если не найдется чего-то более простого:

--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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...