MySQL CONCAT: So führen Sie Strings zusammen

Mit dem Befehl MySQL CONCAT haben Sie die Möglichkeit, zwei oder mehr Strings zu einer Einheit zusammenzuführen. Während MySQL CONCAT keine Trennzeichen erlaubt, können Sie mit MySQL CONCAT_WS Informationen noch übersichtlicher kombinieren und ausgeben.

Was ist MySQL CONCAT?

Das relationale Datenbankmanagementsystem MySQL arbeitet mit Tabellen. Daten werden übersichtlich in Spalten und Zeilen gespeichert und können dann bei Bedarf abgerufen und auch verbunden werden. Das ist dann wichtig, wenn Informationen aus zwei oder mehr Tabellen benötigt werden. Der praktische Befehl, um mehrere Spalten zusammenzuführen, ist MySQL CONCAT. Diese String-Funktion wenden Sie an, wenn Sie zwei oder mehr Ausdrücke miteinander verketten möchten ­– sie werden dadurch in einer einzelnen Zeichenfolge zusammengefasst und ausgegeben. Es gibt dabei verschiedene Wege, wie Sie MySQL CONCAT nutzen können. Der Name MySQL CONCAT geht auf das englische Wort „concatenate“ („verknüpfen“) zurück.

Da MySQL Daten in unterschiedlichen Tabellen und in verschiedenen Spalten und Zeilen speichert, bleiben diese zunächst unter sich. Bei bestimmten Abfragen oder Aufgaben kann es allerdings nötig sein, diese Informationen gemeinsam auszugeben. Beispiele dafür zeigen wir Ihnen weiter unten. Zur Veranschaulichung eignet sich die Kombination aus Name, Vorname und Adresse. Diese Angaben befinden sich zunächst in einzelnen Spalten und können so auch einzeln gesucht bzw. ausgegeben werden. Benötigen Sie allerdings die Kombination aus allen drei Daten, hilft Ihnen MySQL CONCAT weiter.

Syntax von MySQL CONCAT

Die grundsätzliche Syntax von MySQL CONCAT ist sehr einfach. Hinter dem eigentlichen Befehl werden sämtliche Ausdrücke aufgelistet, die zusammengeführt werden sollen. Diese werden durch Kommata getrennt. Das sieht dann beispielhaft so aus:

CONCAT (Ausdruck1, Ausdruck2, Ausdruck3, …)
bash

Wichtig zu wissen ist, dass MySQL CONCAT Ausdrücke mit einem numerischen Wert in einer Binärzeichenfolge konvertiert. Binäre Zeichenfolgen bleiben binäre Zeichenfolgen, nichtbinäre Zeichenfolgen bleiben ebenfalls nichtbinär. Auch ein Ausdruck mit dem Wert 0 behält den Wert 0 bei.

Alternativ zum regulären Befehl MySQL CONCAT gibt es die Funktion MySQL CONCAT_WS. Die zweite Option arbeitet dabei mit einem Trennzeichen zwischen den einzelnen Strings, während MySQL CONCAT die Verwendung von Trennzeichen nicht erlaubt. Die grundsätzliche Syntax von MySQL CONCAT_WS sieht wie folgt aus:

CONCAT_WS (Trennzeichen, Ausdruck1, Ausdruck2, Ausdruck3, …)
bash

MySQL CONCAT_WS gibt nur dann den Wert 0 zurück, wenn der Wert des Trennzeichens 0 ist.

Beispiele für MySQL CONCAT

Um die Funktionsweise von MySQL CONCAT zu verstehen, lohnt sich ein Blick auf ein paar einfache Beispiele. Zunächst verbinden wir einfach zwei Strings miteinander. So sieht das beispielhaft aus:

SELECT CONCAT ('MySQL', 'CONCAT');
bash

In diesem Fall werden Sie feststellen, dass die Ausgabe ein simples „MySQLCONCAT“ ist. Fügen Sie nun einen Nullwert ein, liest sich der Befehl so:

SELECT CONCAT ('MySQL', NULL, 'CONCAT');
bash

Während dieses Beispiel in der Praxis noch keinen wirklichen Mehrwert bietet und lediglich die grundsätzliche Funktionsweise veranschaulichen soll, bietet der nächste Versuch mehr praktischen Nutzen. Dafür stellen wir uns ein gewöhnliche Kundenliste vor. Diese ist unterteilt in verschiedene Spalten, u. a. Kundennummer, Vorname, Nachname, Adresse oder Telefonnummer. Die Daten sind unabhängig voneinander gespeichert. Um nun eine gemeinsame Ausgabe zu erstellen, hilft Ihnen MySQL CONCAT. Für eine Auflistung der Kunden und Kundinnen mit vollständigen Namen lassen Sie MySQL Vorname, Leerzeichen und Nachname verknüpfen. Dafür nutzen Sie folgenden Befehl:

SELECT CONCAT (Vorname, ' ', Nachname) Kundenname
FROM Kundenliste;
bash

In der Ausgabe werden Ihnen nun sämtliche Kundinnen und Kunden mit Vorname und Nachname aufgelistet.

Beispiele für MySQL CONCAT_WS

Wir bleiben beim obigen Beispiel. Um die Namen in umgekehrter Reihenfolge aufzulisten und Nachname und Vorname durch ein Komma zu trennen, benötigen Sie den Befehl MySQL CONCAT_WS. Der Vorgang ist ähnlich, allerdings wird das Komma den restlichen Informationen vorangestellt. Hier sehen Sie das Beispiel:

SELECT CONCAT_WS (', ', 'Mustermann', 'Max');
bash

Die passende Ausgabe lautet dann „Mustermann, Max“.

Für eine Ausgabe, die verschiedene Informationen übersichtlich wiedergibt, ist dieser Befehl ideal. Im letzten Beispiel sehen Sie, wie Sie mit MySQL CONCAT_WS eine komplette Anschrift ausgeben. So sieht der passende Code aus:

SELECT
CONCAT_WS (CHAR(13),
CONCAT_WS (' ', Vorname, Nachname),
Adresszeile1,
Adresszeile2,
CONCAT_WS (' ', Postleitzahl, Stadt),
Land,
CONCAT_WS (CHAR(13), ' ')) AS Kundenadresse
FROM kundenliste
bash

Die entsprechende Ausgabe sieht so aus:

Kundenadresse
Max Mustermann
Musterstraße 1
10243 Berlin
Deutschland
Sabine Schmidt
Beispielstraße 10
20255 Hamburg
Deutschland
bash