sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo modificar múltiples nodos usando SQL XQuery en MS SQL 2005

El enfoque "simple" sería convertir la columna XML en VARCHAR(MAX) y simplemente hacer un REEMPLAZO en ella:

UPDATE
  YourTable
SET
  ParameterValue = CAST(REPLACE(CAST(ParameterValue AS VARCHAR(MAX)), '
                                Billy', 'Peter') AS XML)
WHERE
  ....

Casi parece que no puede hacer una actualización de múltiples valores de nodo XML en una sola instrucción UPDATE, como explica Richard Szalay aquí :

Desafortunadamente, parece que la implementación está terriblemente limitada, ya que no puede realizar un número arbitrario de modificaciones al mismo valor en una sola actualización.

Entonces, supongo que tendrá que usar el enfoque VARCHAR (MAX) "tonto" mencionado anteriormente, o hacer la actualización en un bucle (MIENTRAS aún encuentra un nodo con "billy", ACTUALICE ese nodo para leer "Peter" en su lugar ).

Marc