Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So fügen Sie ein Trennzeichen zu einer verketteten Zeichenfolge in SQL Server hinzu – CONCAT_WS()

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 (charncharnvarchar , 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.