Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como adicionar um separador a uma string concatenada no MySQL – CONCAT_WS()


No MySQL, o CONCAT_WS() A função permite adicionar um separador a strings concatenadas. Se você apenas usar o CONCAT() função, você não teria separador (a menos que você tenha adicionado explicitamente um separador como um argumento entre cada argumento de string).

Um uso comum do CONCAT_WS() função é criar uma lista delimitada por vírgulas.



Aqui está um exemplo:
SELECT CONCAT_WS(',','Sydney', 'Australia') AS Location;

Resultado:
+------------------+
| Location         |
+------------------+
| Sydney,Australia |
+------------------+

E você pode adicionar um espaço lá se quiser:
SELECT CONCAT_WS(', ','Sydney', 'Australia') AS Location;

Resultado:
+-------------------+
| Location          |
+-------------------+
| Sydney, Australia |
+-------------------+

O Separador


Não há nada para dizer que o separador deve ser uma vírgula. O separador pode ser qualquer string.

Aqui está o mesmo exemplo do anterior, exceto que este usa um separador diferente.
SELECT CONCAT_WS(' - ','Paris', 'France') AS Location;

Resultado:
+----------------+
| Location       |
+----------------+
| Paris - France |
+----------------+

Um exemplo de banco de dados


Aqui está um exemplo de recuperação de dados de um banco de dados e combinação de duas colunas em uma, separadas por uma vírgula:
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


Se algum dos argumentos for um NULL valor, o MySQL pulará esse valor e seu separador, mas ainda processará os outros.

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

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

Separador de valor NULO


Se o próprio separador for um NULL valor, a operação de concatenação retornará NULL .

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

Resultado:
+----------+
| Location |
+----------+
| NULL     |
+----------+

Essa é uma das diferenças entre MySQL e T-SQL (SQL Server, Azure). Em T-SQL, se o separador for um NULL value, os valores da string ainda são concatenados, mas sem um separador.