sql >> Database >  >> RDS >> Sqlserver

Een scheidingsteken toevoegen aan een aaneengeschakelde tekenreeks in SQL Server - CONCAT_WS()

Als u in SQL Server en Azure twee of meer tekenreeksen moet samenvoegen, kunt u de T-SQL CONCAT() gebruiken functie. Zoals bij elke basisaaneenschakeling, voegt deze functie de strings samen, end-to-end.

Maar wat als u een scheidingsteken tussen elke tekenreeks moet toevoegen?

U wilt bijvoorbeeld een door komma's gescheiden lijst met tekenreeksen maken. In dit geval wilt u een komma tussen elke tekenreeks invoegen. Zoals dit:

Paris, France

In plaats van dit:

ParisFrance

Gelukkig biedt T-SQL de CONCAT_WS() functie die u daarbij helpt. De CONCAT_WS() functie werkt net als de CONCAT() functie, behalve dat er een extra argument voor nodig is – het scheidingsteken dat u wilt gebruiken.

Hier is een voorbeeld:

SELECT CONCAT_WS(',','Paris', 'France') AS Location;

Resultaat:

Location    
------------
Paris,France

En je kunt daar een spatie toevoegen als je wilt:

SELECT CONCAT_WS(', ','Paris', 'France') AS Location;

Resultaat:

Location     
-------------
Paris, France

De scheidingsteken

Er is niets om te zeggen dat het scheidingsteken een komma moet zijn. Het scheidingsteken kan een uitdrukking zijn van elk type teken (charncharnvarchar , of varchar ).

Hier is hetzelfde voorbeeld als het vorige, behalve dat dit een ander scheidingsteken gebruikt.

SELECT CONCAT_WS(' - ','Paris', 'France') AS Location;

Resultaat:

Location      
--------------
Paris - France

Een databasevoorbeeld

Hier is een voorbeeld van het ophalen van gegevens uit een database en het combineren van twee kolommen in één, gescheiden door een komma:

SELECT CONCAT_WS(', ', city.Name, country.Name ) AS Location
FROM city
INNER JOIN country ON
city.CountryCode = country.Code
WHERE country.Code = 'THA';

Resultaat:

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-waarden

Als een van de argumenten een NULL . is waarde, zal SQL Server die waarde en zijn scheidingsteken overslaan, maar het zal nog steeds de andere verwerken.

Voorbeeld:

SELECT CONCAT_WS(', ','Paris', NULL, 'France') AS Location;

Resultaat:

Location     
-------------
Paris, France

NULL-waardescheidingsteken

Als het scheidingsteken zelf een NULL is waarde, wordt de aaneenschakeling nog steeds uitgevoerd, maar zonder scheidingsteken.

Voorbeeld:

SELECT CONCAT_WS(NULL,'Paris', NULL, 'France') AS Location;

Resultaat:

Location   
-----------
ParisFrance

Dit is een van de verschillen tussen T-SQL en MySQL (MySQL heeft ook een CONCAT_WS() functie). In MySQL, als het scheidingsteken een NULL . is waarde, resulteert de aaneenschakeling in een NULL waarde.


  1. 2 manieren om een ​​string en een getal samen te voegen in Oracle

  2. PostgreSQL verwerkt namen in Windows

  3. Toepassingen die op Linux draaien verbinden met Amazon Relational Database Services (RDS) voor SQL Server

  4. Externe sleutel met meerdere kolommen in MySQL?