Sql Xquery So ersetzen Sie Text in der Aktualisierungsabfrage

8

Die Tabelle wird als MasterTable

benannt

Spalten

ID type BIGINT ,

Name type VARCHAR(200) (speichert xml Daten aus bestimmten Gründen)

Name enthält Daten, die als

strukturiert sind

<en-US>SomeEnglishText</en-US><it-IT>SomeItalicText</it-IT>

Wenn ich Update die Master Tabelle brauche, dann muss ich zu diesem Zeitpunkt die Varchar auf xml und dann bedingt aktualisieren / ersetzen den value Teil von particular tag dh entweder en-US / it-IT .

Es gibt auch die Möglichkeit, dass Keine Daten / Tags in der Name -Spalte vorhanden sind. Ich denke also zum Zeitpunkt des Einfügens von Daten würde Insert leere Tag-Elemente in der Tabelle wie <en-US></en-US><it-IT></it-IT> Daher muss die update -Abfrage leerer Wert in den Tag-Elementen nämlich en-US/it-IT .

handhaben

Ich versuche es wie folgt zu tun Update-Abfrage.

%Vor%

Ich bekomme folgenden Fehler beim Ausführen der Abfrage

  

Illegale Verwendung der XML-Datentypmethode 'modify'. In diesem Zusammenhang wird eine nicht mutatorische Methode erwartet.

    
Harsh Baid 23.02.2011, 07:08
quelle

1 Antwort

14

Sie können keine Zuweisung von einem xml.modify vornehmen. Ändern wirkt direkt auf die Variable / Spalte. Sie können für einen Cast auch keine Änderungen vornehmen.

Sie können den Namen in eine XML-Variable extrahieren, die XML-Datei modifizieren und dann in die Tabelle zurückstellen.

%Vor%

Wenn Sie dies für mehr als eine Zeile gleichzeitig benötigen, können Sie eine Tabellenvariable mit den Spalten id und name verwenden, wobei der Datentyp für name xml anstelle der @xml -Variable ist.

%Vor%     
Mikael Eriksson 23.02.2011, 09:20
quelle