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 demCONCAT()
Funktion. Einer der Vorteile vonCONCAT_WS()
überCONCAT()
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 überCONCAT()
ist, dass esnull
ist -sicher.Wenn eines der zu verkettenden Argumente
null
ist ,CONCAT_WS()
ignoriert sie. DerCONCAT()
Funktion hingegen gibtnull
zurück (es sei denn, es befindet sich im Oracle-Modus, in diesem Fall wirdnull
ignoriert Argumente).Rufen wir
CONCAT_WS()
auf mit einemnull
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 alsnull
-sichere Version vonCONCAT()
: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:
Wenn wir die BINARY
entfernen Operator erhalten wir ein anderes Ergebnis:
SELECT COLLATION(CONCAT_WS(', ', 'Apple', 'Orange'));
Ergebnis:
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'