In MySQL der CONCAT_WS()
Mit der Funktion können Sie verketteten Zeichenfolgen ein Trennzeichen hinzufügen. Wenn Sie einfach den CONCAT()
verwenden -Funktion hätten Sie kein Trennzeichen (es sei denn, Sie hätten explizit ein Trennzeichen als Argument zwischen jedem Zeichenfolgenargument eingefügt).
Eine übliche Verwendung von CONCAT_WS()
Funktion besteht darin, eine durch Kommas getrennte Liste zu erstellen.
Hier ist ein Beispiel:
SELECT CONCAT_WS(',','Sydney', 'Australia') AS Location;
Ergebnis:
+------------------+ | Location | +------------------+ | Sydney,Australia | +------------------+
Und Sie können dort ein Leerzeichen einfügen, wenn Sie möchten:
SELECT CONCAT_WS(', ','Sydney', 'Australia') AS Location;
Ergebnis:
+-------------------+ | Location | +-------------------+ | Sydney, Australia | +-------------------+
Das Trennzeichen
Es gibt nichts zu sagen, dass das Trennzeichen ein Komma sein muss. Das Trennzeichen kann eine beliebige Zeichenfolge sein.
Hier ist das gleiche Beispiel wie im vorherigen, außer dass hier ein anderes Trennzeichen verwendet wird.
SELECT CONCAT_WS(' - ','Paris', 'France') AS Location;
Ergebnis:
+----------------+ | Location | +----------------+ | Paris - France | +----------------+
Ein Datenbankbeispiel
Hier ist ein Beispiel für das Abrufen von Daten aus einer Datenbank und das Kombinieren von zwei Spalten zu einer, getrennt durch ein Komma:
SELECT CONCAT_WS(', ', city.Name, country.Name ) AS Location FROM city INNER JOIN country ON city.CountryCode = country.Code WHERE country.Code = 'NZL';
Ergebnis:
+---------------------------+ | Location | +---------------------------+ | Auckland, New Zealand | | Christchurch, New Zealand | | Manukau, New Zealand | | North Shore, New Zealand | | Waitakere, New Zealand | | Wellington, New Zealand | | Dunedin, New Zealand | | Hamilton, New Zealand | | Lower Hutt, New Zealand | +---------------------------+
NULL-Werte
Wenn eines der Argumente ein NULL
ist Wert, überspringt MySQL diesen Wert und sein Trennzeichen, verarbeitet aber trotzdem die anderen.
Beispiel:
SELECT CONCAT_WS(', ','Auckland', NULL, 'New Zealand') AS Location;
Ergebnis:
+-----------------------+ | Location | +-----------------------+ | Auckland, New Zealand | +-----------------------+
NULL-Wert-Trennzeichen
Wenn das Trennzeichen selbst ein NULL
ist Wert, gibt die Verkettungsoperation NULL
zurück .
Beispiel:
SELECT CONCAT_WS(NULL,'Auckland', NULL, 'New Zealand') AS Location;
Ergebnis:
+----------+ | Location | +----------+ | NULL | +----------+
Dies ist einer der Unterschiede zwischen MySQL und T-SQL (SQL Server, Azure). In T-SQL, wenn das Trennzeichen ein NULL
ist value, die String-Werte werden immer noch verkettet, aber ohne Trennzeichen.