Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come modificare più nodi utilizzando SQL XQuery in MS SQL 2005

L'approccio "semplice" sarebbe quello di eseguire il cast della colonna XML su VARCHAR(MAX) e semplicemente eseguire un REPLACE su di essa:

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

Sembra quasi che tu non possa eseguire un aggiornamento di più valori di nodi XML in una singola istruzione UPDATE, come spiega Richard Szalay qui :

Purtroppo, sembra che l'implementazione sia terribilmente limitata in quanto non può apportare un numero arbitrario di modifiche allo stesso valore in un singolo aggiornamento.

Quindi suppongo che dovrai usare l'approccio "stupido" VARCHAR(MAX) menzionato sopra, o eseguire l'aggiornamento in un ciclo (MENTRE trovi ancora un nodo con "billy", AGGIORNA quel nodo per leggere "Peter" invece ).

Marco