Обновление подстроки в столбце XML SQL Server 2008
Я хочу выполнить обновление всех строк в столбце XML в SQL Server 2008, заменив только подстроку в определенном узле xml. Я новичок в XML DML / XQuery и все такое, и я просто не могу понять, как это сделать.
пример XML в столбце, который я хочу обновить:
<d>
<p n="Richedit01" t="System.String">
<v>
<p> <img border="0" alt="Football4" src="/$-1/football4.jpg" /> </p>
</v>
</p>
</d>
Я хочу заменить все вхождения подстроки ' src="/$-1/' на 'src=" /$-1/file/' во всех строках.
пробовал это, но, по-видимому, нет способа, которым я могу использовать XPath заменяет функцию следующим образом:
UPDATE Translation
SET ContentData.modify('replace value of (d/p[@t=''System.String'']/v)[1] with (d/p[@t=''System.String'']/v[replace(.,''src="/$-1/'',''src="/$-1/file/'')]) ')
1 ответов
Я думаю, что самое простое решение-преобразовать в другой тип данных, который может принять replace(например, nvarchar (MAX)). Используйте функцию REPLACE, а затем преобразуйте ее обратно в XML
что-то вроде
UPDATE Translation SET
ContentData = CAST(REPLACE(CAST(ContentData AS NVARCHAR(MAX)), '/$-1/','/$-1/file/') AS XML)