Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como modificar vários nós usando SQL XQuery no MS SQL 2005


A abordagem "simples" seria converter a coluna XML para VARCHAR(MAX) e simplesmente fazer um REPLACE nela:
UPDATE
  YourTable
SET
  ParameterValue = CAST(REPLACE(CAST(ParameterValue AS VARCHAR(MAX)), '
                                Billy', 'Peter') AS XML)
WHERE
  ....

Quase parece que você não pode fazer uma atualização de vários valores de nó XML em uma única instrução UPDATE, como explica Richard Szalay aqui :

Infelizmente, parece que a implementação é terrivelmente limitada, pois não pode fazer um número arbitrário de modificações no mesmo valor em uma única atualização.

Então eu acho que você terá que usar a abordagem "burra" VARCHAR (MAX) mencionada acima, ou fazer a atualização em um loop (ENQUANTO você ainda encontrar um nó com "billy", ATUALIZE esse nó para ler "Peter" em vez disso ).

Marco