[SQL] String teilweise ersetzen

kenza

Lt. Junior Grade
Registriert
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.
 
LIKE geht natürlich nur beim WHERE unten. Probiers mal so

Code:
UPDATE tabelle
SET spalte = REPLACE(spalte, 'abc', 'xyz')
WHERE spalte like 'abc%';
 
Nein, ist nicht statisch. Mein Beispiel war schlecht :-)
 
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:
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
 
Wenn es beides strings sind, reicht sogar ein +.
 
  • Gefällt mir
Reaktionen: aggitron
aggitron schrieb:
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
 

Ähnliche Themen

Zurück
Oben