„Proste” podejście polegałoby na rzuceniu kolumny XML na VARCHAR(MAX) i po prostu wykonaniu na niej REPLACE:
UPDATE
YourTable
SET
ParameterValue = CAST(REPLACE(CAST(ParameterValue AS VARCHAR(MAX)), '
Billy', 'Peter') AS XML)
WHERE
....
Wygląda na to, że nie można zaktualizować wielu wartości węzłów XML w jednej instrukcji UPDATE, jak wyjaśnia Richard Szalay tutaj :
Niestety, wygląda na to, że implementacja jest strasznie ograniczona, ponieważ nie może dokonać dowolnej liczby modyfikacji tej samej wartości w jednej aktualizacji.
Sądzę więc, że będziesz musiał albo użyć „głupiego” podejścia VARCHAR (MAX) wspomnianego powyżej, albo wykonać aktualizację w pętli (GDY nadal znajdziesz węzeł z „billy”, Zaktualizuj ten węzeł, aby zamiast tego czytał „Piotr” ).
Marek