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

Wie CONCAT_WS() in MariaDB funktioniert

In MariaDB CONCAT_WS() ist eine eingebaute String-Funktion, die für Concatenate With Separator steht.

CONCAT_WS() führt eine Zeichenfolgenverkettung für seine Argumente durch, wobei das erste Argument das Trennzeichen für die verbleibenden Argumente ist.

Verkettung ist der Vorgang, bei dem zwei oder mehr Zeichenfolgen Ende an Ende verbunden werden.

CONCAT_WS() akzeptiert zwei oder mehr Argumente (obwohl die Angabe von nur zwei Argumenten dazu führen würde, dass nichts verkettet wird, da das erste Argument das Trennzeichen und das zweite eine einzelne Zeichenfolge ist, die mit … sonst nichts verkettet wird).

Syntax

Die Syntax lautet wie folgt:

CONCAT_WS(separator,str1,str2,...) 

Wobei separator ist die Zeichenfolge, die als Trennzeichen verwendet werden soll, und str1, str2, … stellen die String-Argumente dar, für die verkettet werden soll.

Beispiel

Hier ist ein einfaches Beispiel:

SELECT CONCAT_WS( ', ', 'Milk', 'Cheese', 'Bread'); 

Ergebnis:

+---------------------------------------------+ | CONCAT_WS( ', ', 'Milch', 'Käse', 'Brot') |+------------------------------ ---------------+| Milch, Käse, Brot |+-------------------------------------------------- --+

In diesem Fall haben wir drei Zeichenfolgen mit einem Komma und einem Leerzeichen als Trennzeichen verkettet.

Hier ist eine andere, die ein anderes Trennzeichen verwendet:

SELECT CONCAT_WS('-', 'Blue', 'Red', 'Green'); 

Ergebnis:

+----------------------------------------+| CONCAT_WS('-', 'Blau', 'Rot', 'Grün') |+------------------------------ ----------+| Blau-Rot-Grün |+----------------------------------------+ 

CONCAT_WS() ähnelt dem CONCAT() Funktion. Einer der Vorteile von CONCAT_WS() über CONCAT() wird deutlich, wenn viele Zeichenfolgen verkettet werden.

Führen Sie das vorherige Beispiel mit CONCAT() aus , müssten wir das Trennzeichen zwischen den einzelnen Zeichenfolgen wiederholen.

So:

SELECT CONCAT('Blue', '-', 'Red', '-', 'Green'); 

Ergebnis:

+--------------------------------------------------+| CONCAT('Blau', '-', 'Rot', '-', 'Grün') |+--------------------- ----------------+| Blau-Rot-Grün |+-----------------------------------------+ 

Dies könnte unhandlich werden, wenn wir viele Zeichenfolgen zu verketten hätten.

Kein Trennzeichen

Die Angabe einer leeren Zeichenfolge als Trennzeichen verkettet die Zeichenfolgen ohne Trennzeichen:

SELECT CONCAT_WS('', 'Blue', 'Red', 'Green'); 

Ergebnis:

+--------------------------+| CONCAT_WS('', 'Blau', 'Rot', 'Grün') |+------------------------------- --------+| BlauRotGrün |+------------------------------------------+

In diesem Fall erhalten wir dasselbe Ergebnis wie bei der Verwendung von CONCAT() um diese drei Strings zu verketten.

Es ist wichtig, ein Trennzeichen bereitzustellen, auch wenn es leer ist. Wenn Sie kein Trennzeichen angeben, wird die erste Verkettungszeichenfolge als Trennzeichen verwendet, was wahrscheinlich nicht das ist, was Sie wollen.

Beispiel:

SELECT CONCAT_WS('Blue', 'Red', 'Green', 'Orange'); 

Ergebnis:

+---------------------------------------------+ | CONCAT_WS('Blau', 'Rot', 'Grün', 'Orange') |+------------------------------ ---------------+| RotBlauGrünBlauOrange |+---------------------------------------------+

In diesem Fall Blue ist das erste Argument und wird daher als Trennzeichen verwendet.

Null-Argumente verketten

Ein weiterer Vorteil von CONCAT_WS() hat über CONCAT() ist, dass es null ist -sicher.

Wenn eines der zu verkettenden Argumente null ist , CONCAT_WS() ignoriert sie. Der CONCAT() Funktion hingegen gibt null zurück (es sei denn, es befindet sich im Oracle-Modus, in diesem Fall wird null ignoriert Argumente).

Rufen wir CONCAT_WS() auf mit einem null Argument:

SELECT CONCAT_WS('-', 'Blue', NULL, 'Green'); 

Ergebnis:

+--------------------------+| CONCAT_WS('-', 'Blau', NULL, 'Grün') |+------------------------------- -------+| Blau-Grün |+--------------------------------------+

Wie erwartet, CONCAT_WS() das Null-Argument übersprungen und die verbleibenden Argumente verkettet.

Das heißt, wenn wir einen leeren String als Trennzeichen angeben, können wir CONCAT_WS() verwenden als null -sichere Version von CONCAT() :

SELECT CONCAT_WS('', 'Blue', NULL, 'Green'); 

Ergebnis:

+--------------------------------------+| CONCAT_WS('', 'Blau', NULL, 'Grün') |+---------------------------------------------- -----+| BlauGrün |+--------------------------------------------------+

Null-Trennzeichen

Bereitstellen eines null Trennzeichen ist eine andere Geschichte. Dadurch wird null zurückgegeben .

SELECT CONCAT_WS(NULL, 'Blue', 'Red', 'Green'); 

Ergebnis:

+------------------------------------+| CONCAT_WS(NULL, 'Blau', 'Rot', 'Grün') |+------------------------------- ---------+| NULL |+------------------------------------+

Binäre Zeichenfolgen

Wenn eines der Argumente ein binärer String ist, ist das Ergebnis ein binärer String:

SELECT CONCAT_WS(', ', BINARY 'Apple', 'Orange'); 

Ergebnis:

+--------------------------------------------------+| CONCAT_WS(', ', BINARY 'Apfel', 'Orange') |+---------------------------------------------- ----------+| Apfel, Orange |+--------------------------------------------------+

Wir können die COLLATION() verwenden Funktion, um die Sortierung des Ergebnisses zu überprüfen:

SELECT COLLATION(CONCAT_WS(', ', BINARY 'Apple', 'Orange')); 

Ergebnis:

+---------------------------------------------- --------+| COLLATION(CONCAT_WS(', ', BINARY 'Apfel', 'Orange')) |+------------------------------ ------------------------+| binär |+------------------------------------------------------------ -------+

Wenn wir die BINARY entfernen Operator erhalten wir ein anderes Ergebnis:

SELECT COLLATION(CONCAT_WS(', ', 'Apple', 'Orange')); 

Ergebnis:

+---------------------------------------------- -+| COLLATION(CONCAT_WS(', ', 'Apfel', 'Orange')) |+------------------------------- ----------------+| utf8_general_ci |+------------------------------------------------------------ +

Einzelnes Argument

Aufruf von CONCAT_WS() mit nur einem Argument gibt einen Fehler zurück:

SELECT CONCAT_WS('Blue'); 

Ergebnis:

FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion 'CONCAT_WS'

Fehlende Argumente

Aufruf von CONCAT_WS() ohne Argumente zu übergeben führt zu einem Fehler:

SELECT CONCAT_WS(); 

Ergebnis:

FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion 'CONCAT_WS'