Обновление подстроки в столбце XML SQL Server 2008

Я хочу выполнить обновление всех строк в столбце XML в SQL Server 2008, заменив только подстроку в определенном узле xml. Я новичок в XML DML / XQuery и все такое, и я просто не могу понять, как это сделать.

пример XML в столбце, который я хочу обновить:

<d>
  <p n="Richedit01" t="System.String">
    <v>
      &lt;p&gt; &lt;img border="0" alt="Football4" src="/$-1/football4.jpg" /&gt; &lt;/p&gt;
    </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)