sql >> Database teknologi >  >> RDS >> Mysql

Sådan tilføjes en separator til en sammenkædet streng i MySQL – CONCAT_WS()

I MySQL er CONCAT_WS() funktionen giver dig mulighed for at tilføje en separator til sammenkædede strenge. Hvis du bare bruger CONCAT() funktion, ville du ikke have nogen separator (medmindre du eksplicit tilføjede en separator som et argument mellem hvert strengargument).

En almindelig brug af CONCAT_WS() funktion er at oprette en kommasepareret liste.

Her er et eksempel:

SELECT CONCAT_WS(',','Sydney', 'Australia') AS Location;

Resultat:

+------------------+
| Location         |
+------------------+
| Sydney,Australia |
+------------------+

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

SELECT CONCAT_WS(', ','Sydney', 'Australia') AS Location;

Resultat:

+-------------------+
| Location          |
+-------------------+
| Sydney, Australia |
+-------------------+

Separatoren

Der er ikke noget at sige til, at separatoren skal være et komma. Separatoren kan være en hvilken som helst streng.

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 = 'NZL';

Resultat:

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

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

Eksempel:

SELECT CONCAT_WS(', ','Auckland', NULL, 'New Zealand') AS Location;

Resultat:

+-----------------------+
| Location              |
+-----------------------+
| Auckland, New Zealand |
+-----------------------+

NULL-værdiseparator

Hvis selve separatoren er en NULL værdi, vil sammenkædningsoperationen returnere NULL .

Eksempel:

SELECT CONCAT_WS(NULL,'Auckland', NULL, 'New Zealand') AS Location;

Resultat:

+----------+
| Location |
+----------+
| NULL     |
+----------+

Dette er en af ​​forskellene mellem MySQL og T-SQL (SQL Server, Azure). I T-SQL, hvis separatoren er en NULL værdi, er strengværdierne stadig sammenkædet, men uden en separator.


  1. Introduktion til Oracle RMAN

  2. Hvad svarer MySQL-forespørgslen til PHP strip_tags?

  3. gem List<Model class> til sqlite

  4. Fordelene ved PostgreSQL