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

Come aggiungere un separatore a una stringa concatenata in MySQL – CONCAT_WS()

In MySQL, il CONCAT_WS() La funzione consente di aggiungere un separatore alle stringhe concatenate. Se usi solo CONCAT() funzione, non avresti separatore (a meno che tu non abbia aggiunto esplicitamente un separatore come argomento tra ogni argomento di stringa).

Un uso comune di CONCAT_WS() la funzione è creare un elenco delimitato da virgole.

Ecco un esempio:

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

Risultato:

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

E puoi aggiungere uno spazio lì dentro se vuoi:

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

Risultato:

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

Il separatore

Non c'è niente da dire che il separatore deve essere una virgola. Il separatore può essere qualsiasi stringa.

Ecco lo stesso esempio del precedente, tranne per il fatto che questo utilizza un separatore diverso.

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

Risultato:

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

Un esempio di database

Ecco un esempio di recupero di dati da un database e di combinazione di due colonne in una, separate da una virgola:

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

Risultato:

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

Valori NULL

Se uno qualsiasi degli argomenti è un NULL value, MySQL salterà quel valore e il suo separatore, ma elaborerà comunque gli altri.

Esempio:

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

Risultato:

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

Separatore di valore NULL

Se il separatore stesso è un NULL valore, l'operazione di concatenazione restituirà NULL .

Esempio:

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

Risultato:

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

Questa è una delle differenze tra MySQL e T-SQL (SQL Server, Azure). In T-SQL, se il separatore è NULL value, i valori della stringa sono ancora concatenati, ma senza un separatore.