MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie CONCAT() in MariaDB funktioniert

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 zwischen Homer ein doppeltes Leerzeichen steht und Simpson .

Für einen null -sichere Alternative, verwenden Sie CONCAT_WS() . Diese Funktion ignoriert null -Werte, auch wenn Sie sich nicht im Oracle-Modus befinden.

Alternativ können Sie IFNULL() verwenden um einen alternativen (String-)Wert für null 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'