Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So ändern Sie mehrere Knoten mit SQL XQuery in MS SQL 2005

Der "einfache" Ansatz wäre, die XML-Spalte in VARCHAR(MAX) umzuwandeln und einfach ein REPLACE darauf auszuführen:

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

Es scheint fast so, als ob Sie mehrere XML-Knotenwerte nicht in einer einzigen UPDATE-Anweisung aktualisieren können, wie Richard Szalay erklärt hier :

Leider scheint die Implementierung schrecklich eingeschränkt zu sein, da sie nicht eine beliebige Anzahl von Änderungen an demselben Wert in einem einzigen Update vornehmen kann.

Ich denke, Sie müssen also entweder den oben erwähnten "dummen" VARCHAR (MAX) -Ansatz verwenden oder die Aktualisierung in einer Schleife durchführen (WÄHREND Sie immer noch einen Knoten mit "billy" finden), AKTUALISIEREN Sie diesen Knoten, um stattdessen "Peter" zu lesen ).

Markus