Sql Xquery-so Ersetzen Sie text in Update Abfrage

Tabelle ist benannt als MasterTable

Spalten

ID Typ BIGINT,

Name Typ VARCHAR(200) (speichert xml geben die Daten aus einigen Gründen)

Name enthält Daten strukturiert

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

Wenn ich Update die Master Tabelle dann an, die Zeit, die ich Brauche zu werfen Varchar zu xml dann bedingt aktualisieren /ersetzen die value Teil der besonderen tag ich.e entweder en-US /it-IT.

Auch gibt es Chancen, dass Keine Daten/tags gibt es in Name Spalte, also denke ich, dass die Zeit, die zum Einfügen von Daten es würde Insert leere tag-Elemente in der Tabelle wie <en-US></en-US><it-IT></it-IT>, so die update Abfrage muss Griff leeren Wert in tag-Elemente nämlich en-US/it-IT.

Ich versuche, es zu tun, wie folgende update-Abfrage.

DECLARE @Str VARCHAR(200)

SET @Str = 'Test Text'

UPDATE [MasterTable]
SET [Name] = cast([MasterTable].[Name] as xml).modify('replace value of (en-US/text())[1] with sql:variable("@Str")')
WHERE [ID]=18

Bekomme ich folgende Fehlermeldung beim ausführen der Abfrage

Rechtswidrige Verwendung der xml-datentypmethode 'ändern'. Ein non-mutator-Methode wird erwartet, dass in diesem Zusammenhang.

InformationsquelleAutor Harsh Baid | 2011-02-23
Schreibe einen Kommentar