Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment modifier plusieurs nœuds à l'aide de SQL XQuery dans MS SQL 2005

L'approche "simple" consisterait à convertir la colonne XML en VARCHAR(MAX) et à effectuer simplement un REPLACE dessus :

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

Il semble presque que vous ne pouvez pas mettre à jour plusieurs valeurs de nœud XML dans une seule instruction UPDATE, comme l'explique Richard Szalay ici :

Malheureusement, il semble que l'implémentation soit horriblement limitée dans la mesure où elle ne peut pas apporter un nombre arbitraire de modifications à la même valeur dans une seule mise à jour.

Donc je suppose que vous devrez soit utiliser l'approche "stupide" VARCHAR(MAX) mentionnée ci-dessus, soit faire la mise à jour en boucle (PENDANT que vous trouvez toujours un nœud avec "billy", METTRE À JOUR ce nœud pour lire "Peter" à la place ).

Marc