Mit dem Befehl MySQL CONCAT haben Sie die Mög­lich­keit, zwei oder mehr Strings zu einer Einheit zu­sam­men­zu­füh­ren. Während MySQL CONCAT keine Trenn­zei­chen erlaubt, können Sie mit MySQL CONCAT_WS In­for­ma­tio­nen noch über­sicht­li­cher kom­bi­nie­ren und ausgeben.

Was ist MySQL CONCAT?

Das re­la­tio­na­le Da­ten­bank­ma­nage­ment­sys­tem MySQL arbeitet mit Tabellen. Daten werden über­sicht­lich in Spalten und Zeilen ge­spei­chert und können dann bei Bedarf abgerufen und auch verbunden werden. Das ist dann wichtig, wenn In­for­ma­tio­nen aus zwei oder mehr Tabellen benötigt werden. Der prak­ti­sche Befehl, um mehrere Spalten zu­sam­men­zu­füh­ren, ist MySQL CONCAT. Diese String-Funktion wenden Sie an, wenn Sie zwei oder mehr Ausdrücke mit­ein­an­der verketten möchten ­– sie werden dadurch in einer einzelnen Zei­chen­fol­ge zu­sam­men­ge­fasst und aus­ge­ge­ben. Es gibt dabei ver­schie­de­ne Wege, wie Sie MySQL CONCAT nutzen können. Der Name MySQL CONCAT geht auf das englische Wort „con­ca­te­na­te“ („ver­knüp­fen“) zurück.

Da MySQL Daten in un­ter­schied­li­chen Tabellen und in ver­schie­de­nen Spalten und Zeilen speichert, bleiben diese zunächst unter sich. Bei be­stimm­ten Abfragen oder Aufgaben kann es al­ler­dings nötig sein, diese In­for­ma­tio­nen gemeinsam aus­zu­ge­ben. Beispiele dafür zeigen wir Ihnen weiter unten. Zur Ver­an­schau­li­chung eignet sich die Kom­bi­na­ti­on aus Name, Vorname und Adresse. Diese Angaben befinden sich zunächst in einzelnen Spalten und können so auch einzeln gesucht bzw. aus­ge­ge­ben werden. Benötigen Sie al­ler­dings die Kom­bi­na­ti­on aus allen drei Daten, hilft Ihnen MySQL CONCAT weiter.

Syntax von MySQL CONCAT

Die grund­sätz­li­che Syntax von MySQL CONCAT ist sehr einfach. Hinter dem ei­gent­li­chen Befehl werden sämtliche Ausdrücke auf­ge­lis­tet, die zu­sam­men­ge­führt werden sollen. Diese werden durch Kommata getrennt. Das sieht dann bei­spiel­haft so aus:

CONCAT (Ausdruck1, Ausdruck2, Ausdruck3, …)
bash

Wichtig zu wissen ist, dass MySQL CONCAT Ausdrücke mit einem nu­me­ri­schen Wert in einer Bi­när­zei­chen­fol­ge kon­ver­tiert. Binäre Zei­chen­fol­gen bleiben binäre Zei­chen­fol­gen, nicht­bi­nä­re Zei­chen­fol­gen bleiben ebenfalls nicht­bi­när. Auch ein Ausdruck mit dem Wert 0 behält den Wert 0 bei.

Al­ter­na­tiv zum regulären Befehl MySQL CONCAT gibt es die Funktion MySQL CONCAT_WS. Die zweite Option arbeitet dabei mit einem Trenn­zei­chen zwischen den einzelnen Strings, während MySQL CONCAT die Ver­wen­dung von Trenn­zei­chen nicht erlaubt. Die grund­sätz­li­che 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 Trenn­zei­chens 0 ist.

Beispiele für MySQL CONCAT

Um die Funk­ti­ons­wei­se von MySQL CONCAT zu verstehen, lohnt sich ein Blick auf ein paar einfache Beispiele. Zunächst verbinden wir einfach zwei Strings mit­ein­an­der. So sieht das bei­spiel­haft aus:

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

In diesem Fall werden Sie fest­stel­len, dass die Ausgabe ein simples „MyS­QL­CON­CAT“ 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 wirk­li­chen Mehrwert bietet und lediglich die grund­sätz­li­che Funk­ti­ons­wei­se ver­an­schau­li­chen soll, bietet der nächste Versuch mehr prak­ti­schen Nutzen. Dafür stellen wir uns ein ge­wöhn­li­che Kun­den­lis­te vor. Diese ist un­ter­teilt in ver­schie­de­ne Spalten, u. a. Kun­den­num­mer, Vorname, Nachname, Adresse oder Te­le­fon­num­mer. Die Daten sind un­ab­hän­gig von­ein­an­der ge­spei­chert. Um nun eine ge­mein­sa­me Ausgabe zu erstellen, hilft Ihnen MySQL CONCAT. Für eine Auf­lis­tung der Kunden und Kundinnen mit voll­stän­di­gen Namen lassen Sie MySQL Vorname, Leer­zei­chen und Nachname ver­knüp­fen. 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 auf­ge­lis­tet.

Beispiele für MySQL CONCAT_WS

Wir bleiben beim obigen Beispiel. Um die Namen in um­ge­kehr­ter Rei­hen­fol­ge auf­zu­lis­ten und Nachname und Vorname durch ein Komma zu trennen, benötigen Sie den Befehl MySQL CONCAT_WS. Der Vorgang ist ähnlich, al­ler­dings wird das Komma den rest­li­chen In­for­ma­tio­nen vor­an­ge­stellt. Hier sehen Sie das Beispiel:

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

Die passende Ausgabe lautet dann „Mus­ter­mann, Max“.

Für eine Ausgabe, die ver­schie­de­ne In­for­ma­tio­nen über­sicht­lich wie­der­gibt, 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 ent­spre­chen­de Ausgabe sieht so aus:

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