Wenn Sie in SQL Server und Azure zwei oder mehr Zeichenfolgen verketten müssen, können Sie T-SQL CONCAT()
verwenden Funktion. Wie bei jeder grundlegenden Verkettungsoperation fügt diese Funktion die Zeichenfolgen Ende-zu-Ende zusammen.
Aber was ist, wenn Sie zwischen den einzelnen Zeichenfolgen ein Trennzeichen einfügen müssen?
Beispielsweise möchten Sie möglicherweise eine durch Kommas getrennte Liste von Zeichenfolgen erstellen. In diesem Fall möchten Sie zwischen jeder Zeichenfolge ein Komma einfügen. So:
Paris, France
Statt dessen:
ParisFrance
Glücklicherweise stellt T-SQL den CONCAT_WS()
bereit Funktion, die Ihnen dabei hilft, genau das zu tun. Der CONCAT_WS()
funktioniert genauso wie CONCAT()
-Funktion, außer dass ein zusätzliches Argument erforderlich ist – das Trennzeichen, das Sie verwenden möchten.
Hier ist ein Beispiel:
SELECT CONCAT_WS(',','Paris', 'France') AS Location;
Ergebnis:
Location ------------ Paris,France
Und Sie können dort ein Leerzeichen einfügen, wenn Sie möchten:
SELECT CONCAT_WS(', ','Paris', 'France') AS Location;
Ergebnis:
Location ------------- Paris, France
Das Trennzeichen
Es gibt nichts zu sagen, dass das Trennzeichen ein Komma sein muss. Das Trennzeichen kann ein Ausdruck eines beliebigen Zeichentyps sein (char
, nchar
, nvarchar
, oder varchar
).
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 = 'THA';
Ergebnis:
Location --------------------------- Bangkok, Thailand Nonthaburi, Thailand Nakhon Ratchasima, Thailand Chiang Mai, Thailand Udon Thani, Thailand Hat Yai, Thailand Khon Kaen, Thailand Pak Kret, Thailand Nakhon Sawan, Thailand Ubon Ratchathani, Thailand Songkhla, Thailand Nakhon Pathom, Thailand
NULL-Werte
Wenn eines der Argumente ein NULL
ist Wert, überspringt SQL Server diesen Wert und sein Trennzeichen, verarbeitet aber weiterhin die anderen.
Beispiel:
SELECT CONCAT_WS(', ','Paris', NULL, 'France') AS Location;
Ergebnis:
Location ------------- Paris, France
NULL-Wert-Trennzeichen
Wenn das Trennzeichen selbst ein NULL
ist -Wert wird die Verkettungsoperation dennoch durchgeführt, jedoch ohne Trennzeichen.
Beispiel:
SELECT CONCAT_WS(NULL,'Paris', NULL, 'France') AS Location;
Ergebnis:
Location ----------- ParisFrance
Dies ist einer der Unterschiede zwischen T-SQL und MySQL (MySQL hat auch einen CONCAT_WS()
Funktion). In MySQL, wenn das Trennzeichen ein NULL
ist Wert ergibt die Verkettung einen NULL
Wert.