sql >> Base de Datos >  >> RDS >> Mysql

Cómo agregar un separador a una cadena concatenada en MySQL – CONCAT_WS()

En MySQL, el CONCAT_WS() La función le permite agregar un separador a cadenas concatenadas. Si solo usa el CONCAT() función, no tendría ningún separador (a menos que haya agregado explícitamente un separador como argumento entre cada argumento de cadena).

Un uso común de CONCAT_WS() función es crear una lista delimitada por comas.

He aquí un ejemplo:

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

Resultado:

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

Y puedes agregar un espacio ahí si quieres:

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

Resultado:

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

El Separador

No hay nada que decir que el separador debe ser una coma. El separador puede ser cualquier cadena.

Este es el mismo ejemplo que el anterior, excepto que este usa un separador diferente.

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

Resultado:

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

Un ejemplo de base de datos

Este es un ejemplo de cómo recuperar datos de una base de datos y combinar dos columnas en una, separadas por una coma:

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

Resultado:

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

Valores NULOS

Si alguno de los argumentos es NULL valor, MySQL omitirá ese valor y su separador, pero seguirá procesando los demás.

Ejemplo:

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

Resultado:

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

Separador de valor NULL

Si el propio separador es un NULL valor, la operación de concatenación devolverá NULL .

Ejemplo:

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

Resultado:

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

Esta es una de las diferencias entre MySQL y T-SQL (SQL Server, Azure). En T-SQL, si el separador es NULL valor, los valores de cadena todavía están concatenados, pero sin un separador.