MSSQL 2005 - XML-Feld Inhalt ändern
Braeuchte Hilfe bei der Erstellung eines Querys für SQL-Server 2005.
Habe eine Tabelle mit einer XML-Spalte 'Lagerverteilung' mit diesem Aufbau.
<Root>
<Row>
<Lager>1</Lager>
<Menge>1</Menge>
</Row>
<Row>
<Lager>2</Lager>
<Menge>1</Menge>
</Row>
</Root>
Nun muesste ich einen Update absetzen, dass die Werte der Ebene Lager von '1' auf '1A' ändert.
Ist sowas machbar ?
Habe eine Tabelle mit einer XML-Spalte 'Lagerverteilung' mit diesem Aufbau.
<Root>
<Row>
<Lager>1</Lager>
<Menge>1</Menge>
</Row>
<Row>
<Lager>2</Lager>
<Menge>1</Menge>
</Row>
</Root>
Nun muesste ich einen Update absetzen, dass die Werte der Ebene Lager von '1' auf '1A' ändert.
Ist sowas machbar ?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 48271
Url: https://administrator.de/contentid/48271
Ausgedruckt am: 15.11.2024 um 09:11 Uhr
4 Kommentare
Neuester Kommentar
Moin hueni4u,
ich bin nicht sicher, ob ich Deinen Tabellenaufbau vollständig begreifen bzw begreifen kann.
Aber wenn wirklich das wirklich ein Textfeld Varchar(2000) oder so etwas ist, in dem eine komplette XML-Struktur abgelegt ist, dann...
Ich hoffe allerdings irgendwie, ich habe die Tabellenstruktur missverstanden...
Gruß
Biber
ich bin nicht sicher, ob ich Deinen Tabellenaufbau vollständig begreifen bzw begreifen kann.
Aber wenn wirklich das wirklich ein Textfeld Varchar(2000) oder so etwas ist, in dem eine komplette XML-Struktur abgelegt ist, dann...
UPDATE <i>tabellenname</i>
Set Lagerverteilung = Replace(Lagerverteilung, "<Lager>1</Lager>", "<Lager>1A</Lager>"
Ich hoffe allerdings irgendwie, ich habe die Tabellenstruktur missverstanden...
Gruß
Biber
Moin hueni4me,
ich habe gerade folgendes an einer SQL-Datenbank (Nicht-M$) ohne Fehlermeldungen oder unerwartete Ergebnisse durchgenudelt:
der Part '<Lager>1</Lager>' war hinterher sowohl im CHAR-Feld wie auch im VARCHAR-Feld mit '<Lager>1A</Lager>' ersetzt.
Meines Wissens nach kennt und akzeptiert M$SQL sowohl die STUFF()- wie auch die REPLACE()- Skalarfunktion... sollte also eigentlich funktionieren.
Da es das aber offensichtlich bei Dir nicht tut:
Wie lautet denn die Fehlermeldung?
Oder passiert einfach nur nix?
Grüße
Biber
ich habe gerade folgendes an einer SQL-Datenbank (Nicht-M$) ohne Fehlermeldungen oder unerwartete Ergebnisse durchgenudelt:
create table temp (
text1 varchar(1000),
text2 char(200)
) ;
insert into temp(text1, text2) values (
'<Root>
<Row>
<Lager>1</Lager>
<Menge>1</Menge>
</Row>
<Row>
<Lager>2</Lager>
<Menge>1</Menge>
</Row>
</Root>',
'<Root>
<Row>
<Lager>1</Lager>
<Menge>1</Menge>
</Row>
<Row>
<Lager>2</Lager>
<Menge>1</Menge>
</Row>
</Root>'
);
Update temp set text1 = replace( text1, '<Lager>1</Lager>', '<Lager>1A</Lager>');
Update temp set text2 = replace( text2, '<Lager>1</Lager>', '<Lager>1A</Lager>');
select * from temp;
der Part '<Lager>1</Lager>' war hinterher sowohl im CHAR-Feld wie auch im VARCHAR-Feld mit '<Lager>1A</Lager>' ersetzt.
Meines Wissens nach kennt und akzeptiert M$SQL sowohl die STUFF()- wie auch die REPLACE()- Skalarfunktion... sollte also eigentlich funktionieren.
Da es das aber offensichtlich bei Dir nicht tut:
Wie lautet denn die Fehlermeldung?
Oder passiert einfach nur nix?
Grüße
Biber