Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment ajouter un séparateur à une chaîne concaténée dans MySQL - CONCAT_WS()

Dans MySQL, le CONCAT_WS() La fonction vous permet d'ajouter un séparateur aux chaînes concaténées. Si vous utilisez simplement le CONCAT() fonction, vous n'auriez pas de séparateur (sauf si vous avez explicitement ajouté un séparateur comme argument entre chaque argument de chaîne).

Une utilisation courante de CONCAT_WS() fonction est de créer une liste délimitée par des virgules.

Voici un exemple :

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

Résultat :

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

Et vous pouvez y ajouter un espace si vous le souhaitez :

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

Résultat :

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

Le séparateur

Rien ne dit que le séparateur doit être une virgule. Le séparateur peut être n'importe quelle chaîne.

Voici le même exemple que le précédent, sauf que celui-ci utilise un séparateur différent.

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

Résultat :

+----------------+
| Location       |
+----------------+
| Paris - France |
+----------------+

Un exemple de base de données

Voici un exemple de récupération de données d'une base de données et de combinaison de deux colonnes en une seule, séparées par une virgule :

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

Résultat :

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

Valeurs NULLES

Si l'un des arguments est un NULL valeur, MySQL ignorera cette valeur et son séparateur, mais il traitera toujours les autres.

Exemple :

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

Résultat :

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

Séparateur de valeur NULL

Si le séparateur lui-même est un NULL valeur, l'opération de concaténation renverra NULL .

Exemple :

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

Résultat :

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

C'est l'une des différences entre MySQL et T-SQL (SQL Server, Azure). En T-SQL, si le séparateur est un NULL valeur, les valeurs de chaîne sont toujours concaténées, mais sans séparateur.