[SQL] String teilweise ersetzen

kenza

Lt. Junior Grade
Dabei seit
Jan. 2010
Beiträge
275
Möchte per SQL eine Tabelle in einer DB2-Datenbank ändern.

Folgende Strings sind bspw. vorhanden:
"abc123"
"abc456"
"abc789"

Es soll nun "abc" durch "xyz" ersetzt werden, damit es so ausschaut:
"xyz123"
"xyz456"
"xyz789"

Dachte man könnte es so irgendwie machen, aber es funktioniert nicht:
Code:
UPDATE tabelle
SET spalte like "xyz%"
WHERE spalte like "abc%";
Im Editor wäre es die klassische Suchen-Ersetzen-Funktion.
 

KRambo

Lieutenant
Dabei seit
Apr. 2004
Beiträge
869
LIKE geht natürlich nur beim WHERE unten. Probiers mal so

Code:
UPDATE tabelle
SET spalte = REPLACE(spalte, 'abc', 'xyz')
WHERE spalte like 'abc%';
 

kenza

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Jan. 2010
Beiträge
275
Nein, ist nicht statisch. Mein Beispiel war schlecht :-)
 

Hancock

Captain
Dabei seit
Nov. 2007
Beiträge
3.382
Also da bist du mit like und % nicht auf dem falschen Dampfer
Hast du dir mal den || (Concatenate)-Operator genauer angeschaut.
Dein Problem würd ich so lösen
Code:
update tabelle 
set spalte = 'xyz'||substr(spalte,3)
where spalte like 'abc%'
OK, seh grad, nicht statisch ... muss überlegen
replace ist scheinbar Sql Standard:
Code:
update tabelle set spalten =replace(spalten,'abc','xyz')
 
Zuletzt bearbeitet:

aggitron

Commander
Dabei seit
Jan. 2006
Beiträge
2.062
Ich grabe den Thread mal wieder aus.
Ich möchte einen String vor einen vorhandenen String einfügen, also statt etwas zu ersetzen möchte ich etwas ergänzen. Mir fehlt leider ein Lösungsansatz für dieses Problem...

MSSQL
 

Oelepoeto

Cadet 4th Year
Dabei seit
Juli 2019
Beiträge
97
Ich grabe den Thread mal wieder aus.
Ich möchte einen String vor einen vorhandenen String einfügen, also statt etwas zu ersetzen möchte ich etwas ergänzen. Mir fehlt leider ein Lösungsansatz für dieses Problem...

MSSQL
Noch auf der Suche?

Wenn ich dich richtig verstehe sollte es mit STUFF funktionieren:
STUFF (Transact-SQL)

an der Stelle von 'start' kannst du z.B. mit PATINDEX ermitteln, wo genau eingefügt werden muss.
Einfaches Beispiel:

SQL:
SELECT *, STUFF(x.String,PATINDEX('%123%',x.String),0,'DeinSTRING') AS StringNEU
FROM (SELECT 'hj123ab' AS String
        UNION ALL SELECT 'abc123hhg'
    ) x
 
Top