In MariaDB, CONCAT()
ist eine integrierte Zeichenfolgenfunktion, die eine Zeichenfolgenverkettung für ihre Argumente durchführt. Es gibt den String zurück, der sich aus der Verkettung seiner Argumente ergibt.
Verkettung ist der Vorgang, bei dem zwei oder mehr Zeichenfolgen Ende an Ende verbunden werden.
CONCAT()
akzeptiert ein oder mehrere Argumente, die alle als eine einzige verkettete Zeichenfolge zurückgegeben werden.
Syntax
Die Syntax lautet wie folgt:
CONCAT( str1, str2, ... )
Wobei str1, str2, …
stellen die String-Argumente dar, für die verkettet werden soll.
Beispiel
Hier ist ein einfaches Beispiel:
SELECT CONCAT('Homer', 'Jay');
Ergebnis:
+------------------------+| CONCAT('Homer', 'Jay') |+------------------------+| HomerJay |+------------------------+
In diesem Fall haben wir zwei Zeichenfolgen verkettet.
Hier ist es wieder, aber dieses Mal fügen wir ein Leerzeichen dazwischen ein:
SELECT CONCAT('Homer', ' ', 'Jay');
Ergebnis:
+-------------------------------------+| CONCAT('Homer', ' ', 'Jay') |+--------------------------------------+| Homer Jay |+-------------------------------------+
In diesem Fall haben wir drei Zeichenfolgen verkettet.
Hier ist es mit fünf:
SELECT CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson');
Ergebnis:
+---------------------------------------------+ | CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson') |+------------------------------------ ------------------+| Homer Jay Simpson |+--------------------------------------------- +
Binäre Zeichenfolgen
Wenn eines der Argumente ein binärer String ist, ist das Ergebnis ein binärer String:
SELECT CONCAT(BINARY 'Homer', 'Jay');
Ergebnis:
+-------------------------------+| CONCAT(BINARY 'Homer', 'Jay') |+-------------------------------+| HomerJay |+-------------------------------+
Wir können die COLLATION()
verwenden Funktion, um die Sortierung des Ergebnisses zu überprüfen:
SELECT COLLATION(CONCAT(BINARY 'Homer', 'Jay'));
Ergebnis:
+--------------------------------------------------+| COLLATION(CONCAT(BINARY 'Homer', 'Jay')) |+---------------------------------------------- --------+| binär |+--------------------------------------------------+
Wenn wir die BINARY
entfernen Operator erhalten wir ein anderes Ergebnis:
SELECT COLLATION(CONCAT('Homer', 'Jay'));
Ergebnis:
+-----------------------------------+| COLLATION(CONCAT('Homer', 'Jay')) |+----------------------------------- +| utf8_general_ci |+-----------------------------------+
Außerdem werden gemäß der MariaDB-Dokumentation numerische Argumente in ihre äquivalente binäre Zeichenfolgenform konvertiert. Sie können dies vermeiden, indem Sie eine explizite Typumwandlung durchführen (mithilfe von CAST()
oder CONVERT()
).
Null-Argumente
Wenn eines der Argumente null
ist , CONCAT()
gibt null
zurück .
Es gibt jedoch eine Ausnahme:Im Oracle-Modus (d. h. sql_mode=ORACLE
), irgendein null
Argumente werden einfach ignoriert.
Lassen Sie uns zuerst sehen, wie CONCAT()
verhält sich im Standardmodus.
Setzen Sie unsere Sitzung in den Standardmodus:
SET SESSION sql_mode=DEFAULT;
Führen Sie nun CONCAT()
aus mit einem null
Argument:
SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson');
Ergebnis:
+--------------------------------------------------+| CONCAT('Homer', ' ', null, ' ', 'Simpson') |+------------------------------ --------------+| NULL |+--------------------------------------------+Wie erwartet ist das Ergebnis
null
.Lassen Sie uns nun unsere Sitzung in den Oracle-Modus umschalten:
SET SESSION sql_mode=ORACLE;
Und jetzt lassen Sie uns das vorherige
CONCAT()
ausführen Beispiel nochmal:SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson');
Ergebnis:
+--------------------------------------------------+| CONCAT('Homer', ' ', null, ' ', 'Simpson') |+------------------------------ --------------+| Homer Simpson |+--------------------------------------------------+Dieses Mal wurde
null
ignoriert Argument und verkettete alle verbleibenden Nicht-null
Argumente. Wenn Sie genau hinsehen, werden Sie sehen, dass beide Leerzeichen verkettet wurden, sodass zwischenHomer
ein doppeltes Leerzeichen steht undSimpson
.Für einen
null
-sichere Alternative, verwenden SieCONCAT_WS()
. Diese Funktion ignoriertnull
-Werte, auch wenn Sie sich nicht im Oracle-Modus befinden.Alternativ können Sie
IFNULL()
verwenden um einen alternativen (String-)Wert fürnull
bereitzustellen Werte (z. B. eine leere Zeichenfolge).Einzelnes Argument
Aufruf von
CONCAT()
mit nur einem Argument gibt einfach dieses Argument zurück:SELECT CONCAT('Homer');
Ergebnis:
+----------------+| CONCAT('Homer') |+----------------+| Homer |+----------------+Fehlendes Argument
Aufruf von
CONCAT()
ohne Argumente zu übergeben führt zu einem Fehler:SELECT CONCAT();
Ergebnis:
FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion 'CONCAT'