MySQL: Teilstring durch anderen ersetzen

Heute hab ich mich dumm und dämlich gesucht nach der Möglichkeit in einer MySQL-Abfrage einen Teilstring durch einen anderen zu ersetzen. Google hat nicht wirklich sinnvolle Sachen geliefert. Also hab ich es durch probieren und das MySQL-Referenzbuch schließlich doch hinbekommen.

Das Prinzip

Zum Beispiel habe ich eine Tabelle admins und darin eine Spalte email (nur als Anschauungsbeispiel 😉 ). Bisher hat jeder Admin seine eigene Email-Adresse eingetragen. Doch nun möchte ich für alle Admins eine einheitliche „@website-der-admins.de“-Domain einrichten.

Also aus heiko.tester@gmx.de soll dann heiko.tester@website-der-admins.de werden. Alles vor dem @ soll bleiben wie es ist, alles danach soll ersetzt werden. Die passenden Email-Adressen wurden natürlich bereits angelegt.

MySQL kommt ins Spiel

1
2
3
4
UPDATE
    admins
SET
    email = CONCAT(SUBSTRING_INDEX(email, '@', 1), '@website-der-admins.de');
UPDATE
    admins
SET
    email = CONCAT(SUBSTRING_INDEX(email, '@', 1), '@website-der-admins.de');

Mit der Funktion CONCAT kombiniert ihr zwei Teilstrings zu einem. Innerhalb von CONCAT nutze ich die Funktion SUBSTRING_INDEX, um alles vor dem @ (das gibt der dritte Parameter, die 1, an) als ersten Teilstring zu wählen und alles ab dem @ wird mit ‚@website-der-admins.de‘ ersetzt. Wenn ihr es nur bei bestimmten Admins machen wollt, dann könnt ihr das Statement noch mit einer WHERE-Anweisung erweitern.

» Zum Nachlesen

Vielleicht hilft es dem ein oder anderen. Viel Spaß damit.