sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan tilføjes en separator til en sammenkædet streng i SQL Server - CONCAT_WS()

I SQL Server og Azure, hvis du har brug for at sammenkæde to eller flere strenge, kan du bruge T-SQL CONCAT() fungere. Som med enhver grundlæggende sammenkædningsoperation forbinder denne funktion strengene ende-til-ende.

Men hvad hvis du har brug for at tilføje en separator mellem hver streng?

For eksempel vil du måske lave en kommasepareret liste over strenge. I dette tilfælde vil du gerne indsætte et komma mellem hver streng. Sådan:

Paris, France

I stedet for dette:

Paris, France

Heldigvis leverer T-SQL CONCAT_WS() funktion, der hjælper dig med at gøre præcis det. CONCAT_WS() funktionen fungerer ligesom CONCAT() funktion, bortset fra at det kræver et ekstra argument – ​​den separator, du gerne vil bruge.

Her er et eksempel:

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

Resultat:

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

Og du kan tilføje et mellemrum derinde, hvis du vil:

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

Resultat:

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

Separatoren

Der er ikke noget at sige til, at separatoren skal være et komma. Separatoren kan være et udtryk for enhver tegntype (charncharnvarchar , eller varchar ).

Her er det samme eksempel som det forrige, bortset fra at denne bruger en anden separator.

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

Resultat:

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

Et databaseeksempel

Her er et eksempel på at hente data fra en database og kombinere to kolonner til én, adskilt af et komma:

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

Resultat:

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-værdier

Hvis nogen af ​​argumenterne er en NULL værdi, vil SQL Server springe over denne værdi og dens separator, men den vil stadig behandle de andre.

Eksempel:

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

Resultat:

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

NULL-værdiseparator

Hvis selve separatoren er en NULL værdi, vil sammenkædningsoperationen stadig blive udført, men uden en separator.

Eksempel:

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

Resultat:

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

Dette er en af ​​forskellene mellem T-SQL og MySQL (MySQL har også en CONCAT_WS() fungere). I MySQL, hvis separatoren er en NULL værdi, resulterer sammenkædningen i en NULL værdi.


  1. SQL (ORACLE):ORDER BY og LIMIT

  2. INITCAP() Funktion i Oracle

  3. PostgreSQL belastningsbalancering og ProxySQL-forbedringer - ClusterControl 1.5

  4. Konfiguration af LDAP-godkendelse og gruppekortlægning med MariaDB