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.
Vielleicht hilft es dem ein oder anderen. Viel Spaß damit.