MySQL REPLACE: Substrings einfach ersetzen

Mit dem Befehl MySQL REPLACE beheben Sie Fehler oder tauschen veraltete Informationen in einem String aus. Wichtig ist dabei, dass Sie die Groß- und Kleinschreibung beachten.

Was ist MySQL REPLACE?

Die Funktion des Befehls MySQL REPLACE lässt sich in einem Satz zusammenfassen: MySQL REPLACE ersetzt alle Vorkommen eines Substrings durch einen anderen Substring. Das ist zwar grundsätzlich richtig; um diese Aussage aber ein wenig besser zu erklären, lohnt es sich, zunächst den Aufbau von MySQL zu betrachten. Das Datenbankmanagementsystem verwendet Tabellen, um Daten zu speichern und bei Bedarf wieder zur Verfügung zu stellen. Diese Daten sind in Form von Strings hinterlegt, die in einfache oder doppelte Anführungszeichen gesetzt werden. Nun kann es dabei vorkommen, dass sich ein Schreibfehler einschleicht oder eine gespeicherte Information obsolet wird. Hier kommt MySQL REPLACE ins Spiel.

Statt jedes Vorkommen des überflüssigen Substrings mühselig zu suchen und dabei Gefahr zu laufen, dass eine Variante übersehen wird, erledigt MySQL REPLACE diese Aufgabe für Sie. Der Befehl sucht sämtliche Stellen, an denen der hinterlegte Substring in einem String vorkommt und ersetzt diesen durch eine neue Information, die Sie definieren. So können Sie eine veraltete URL austauschen, Zahlen- oder Buchstabendreher beheben oder andere veränderte Werte in Ihrer Tabelle auf den neuesten Stand bringen. Das Ergebnis ist eine optimierte und aktualisierte Datensammlung. Der Befehl MySQL REPLACE ist dabei sehr einfach zu verwenden und bietet nur wenige potenzielle Fallstricke.

Syntax von MySQL REPLACE

Der MySQL Befehl REPLACE besteht aus drei verschiedenen Parametern, die durch Kommata getrennt werden. Deren Daseinsberechtigung wird beim Blick auf die Syntax allerdings schnell klar. Diese sieht aus wie folgt:

REPLACE (string, alter_substring, neuer_substring);
bash

Mit dem Parameter „string“ wird die Quellzeichenfolge definiert, in der der Austausch durchgeführt werden soll. „alter_substring“ bezeichnet den Substring, der vom System gefunden und ausgetauscht werden soll. Als letzten Parameter benötigt MySQL REPLACE den Substring, der stattdessen eingefügt werden soll. Der neue Substring ersetzt den alten überall im vorgegebenen String.

Funktionsweise von MySQL REPLACE

Um die Funktionsweise von MySQL REPLACE zu verstehen, bietet sich ein einfaches Beispiel an. Dafür nehmen wir eine Wortreihe und verändern durch den Befehl ganz einfach ihren Sinn. Das sieht so aus:

SELECT REPLACE ("HUND HUHN HERZ", "U", "A");
bash

Wir weisen das System damit an, im String „HUND HUHN HERZ“ den Buchstaben „U“ durch ein „A“ zu ersetzen. Diese Änderung wird überall dort durchgeführt, wo das „U“ in der aktuellen Version vorkommt. In diesem Fall wäre die Ausgabe also:

REPLACE ("HUND HUHN HERZ", "U", "A")
HAND HAHN HERZ
bash

MySQL Replace ist case-sensitive

Wichtig ist dabei, dass Sie nicht vergessen, dass MySQL REPLACE die Groß- und Kleinschreibung beachtet. In unserem Beispiel oben spielt das noch keine Rolle, im folgenden Fall sehen Sie aber, warum das einen Unterschied machen kann.

SELECT REPLACE ("Fragen", "F", "t");
bash

Die Ausgabe sieht bei diesem Beispiel dann so aus:

REPLACE ("Fragen", "F", "t")
tragen
bash

Das bedeutet aber auch, dass MySQL REPLACE nicht das gewünschte Ergebnis erzielt, wenn Sie beim Schreiben des Befehls die Groß- und Kleinschreibung nicht beachten. Würden Sie im obigen Beispiel als alten Substring ein kleines „f“ einsetzen, könnte der Austausch nicht vorgenommen werden, da der Buchstabe in dieser Schreibweise nicht im String vorkommt.

MySQL REPLACE mit Zahlen

MySQL REPLACE funktioniert allerdings nicht nur mit Buchstaben, sondern auch mit Zahlen. Die Funktionsweise ist dabei letztlich identisch. In der folgenden Zahlenreihe befindet sich ein offensichtlicher Fehler, den wir mit MySQL REPLACE ganz einfach beheben können:

SELECT REPLACE ("16345", "6", "2");
bash

Die Ausgabe sieht direkt viel besser aus:

REPLACE ("16345", "6", "2")
12345
bash

Ein Beispiel aus der Praxis

Während die Beispiele oben zwar einen Eindruck vermitteln, wie Sie MySQL REPLACE einsetzen können, darüber hinaus aber keinen praktischen Nutzen haben, zeigt das folgende Beispiel, wie der Befehl Ihre Daten bereinigt. Stellen wir uns dafür vor, dass Sie in einer Kundenliste einen Buchstabendreher in der Spalte „Stadt“ entdeckt haben. Statt „Berlin“ steht dort mindestens einmal „Belrin“. Statt sämtliche Einträge zu löschen, ersetzen Sie die fehlerhafte Stadt durch die richtige Schreibweise. Das funktioniert so:

UPDATE Kundenliste
SET
Stadt = REPLACE (Stadt, "Belrin", "Berlin");
bash

Nun ist die entsprechende Spalte wieder korrekt.