«Простым» подходом было бы преобразовать столбец XML в VARCHAR (MAX) и просто выполнить ЗАМЕНУ для него:
UPDATE
YourTable
SET
ParameterValue = CAST(REPLACE(CAST(ParameterValue AS VARCHAR(MAX)), '
Billy', 'Peter') AS XML)
WHERE
....
Похоже, что вы не можете обновить несколько значений узлов XML в одном операторе UPDATE, как объясняет Ричард Сзалай здесь :
К сожалению, похоже, что реализация ужасно ограничена тем, что она не может сделать произвольное количество модификаций одного и того же значения в одном обновлении.
Так что я думаю, вам придется либо использовать упомянутый выше подход "тупой" VARCHAR (MAX), либо выполнить обновление в цикле (пока вы все еще находите узел с "billy", ОБНОВИТЕ этот узел для чтения " Питер "вместо).
Марк