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

Como usar o coalesce no MySQL


Coalesce é uma função útil do MySQL que retorna automaticamente o primeiro valor não nulo de uma lista de valores. Esses valores podem ser fornecidos usando literais, nomes de colunas ou outras funções do MySQL. Neste artigo, veremos como usar o Coalesce no MySQL.



Como usar o coalesce no MySQL


Aqui estão as etapas para usar o COALSCE no MySQL



O que é COALESCE no MySQL


A função COALESCE retorna o primeiro valor não NULL de uma lista de valores. Se todos os valores da lista forem NULL, ela retornará NULL. Aqui está a sintaxe da função Coalesce no MySQL.
select coalesce(value1, value2, ..., valuen) 
from table_name;

Na instrução acima, você precisa especificar o nome da tabela e fornecer uma lista de valores separados por vírgula.

Aqui estão alguns exemplos simples para mostrar a funcionalidade do COALESCE.
mysql> select coalesce(NULL, 2, 3);
+----------------------+
| coalesce(NULL, 2, 3) |
+----------------------+
|                    2 |
+----------------------+

mysql> select coalesce(NULL, NULL);
+----------------------+
| coalesce(NULL, NULL) |
+----------------------+
|                 NULL |
+----------------------+



Por que COALESCE é usado no MySQL


COALESCE é usado no MySQL para substituir valores nulos por alguma outra string de sua escolha. Isso é muito útil para relatórios e análises em que você não deseja alterar os dados reais, mas precisa relatá-los de uma maneira diferente.

Digamos que você tenha a seguinte tabela sales(id, product, order_date, amount) que contém valores nulos.
mysql> create table sales(id int, 
        product varchar(5),
        order_date date, 
        amount int);

mysql> insert into sales(id, product, order_date, amount)
       values(null, 'A','2020-01-01',150),
       (2, null,'2020-01-01',150),
       (null, 'C',null,150),
       (4, 'D','2020-01-01',null);

mysql> select * from sales;
+------+---------+------------+--------+
| id   | product | order_date | amount |
+------+---------+------------+--------+
| NULL | A       | 2020-01-01 |    150 |
|    2 | NULL    | 2020-01-01 |    150 |
| NULL | C       | NULL       |    150 |
|    4 | D       | 2020-01-01 |   NULL |
+------+---------+------------+--------+

Agora usaremos COALESCE para obter o primeiro valor não nulo de cada linha.
mysql> select coalesce(id, product, order_date, amount) from sales;
+-------------------------------------------+
| coalesce(id, product, order_date, amount) |
+-------------------------------------------+
| A                                         |
| 2                                         |
| C                                         |
| 4                                         |
+-------------------------------------------+

Como você pode ver, COALESCE retorna valores não nulos de cada linha.

Você também pode usar a função COALESCE para substituir valores nulos por strings personalizadas. No exemplo a seguir, substituiremos cada valor nulo pela string 'NA' usando COALESCE.
mysql> select coalesce(id, 'NA') id, 
       coalesce(product,'NA') product, 
       coalesce(order_date,'NA') order_date, 
       coalesce(amount,'NA') amount 
       from sales;
 +------+---------+------------+--------+
 | id   | product | order_date | amount |
 +------+---------+------------+--------+
 | NA   | A       | 2020-01-01 | 150    |
 | 2    | NA      | 2020-01-01 | 150    |
 | NA   | C       | NA         | 150    |
 | 4    | D       | 2020-01-01 | NA     |
 +------+---------+------------+--------+



COALESCE vs IFNULL MySQL


Embora IFNULL também possa ser usado para substituir valores NULL, ele pode aceitar apenas 2 argumentos, retorna o 1º argumento se for nulo, senão retorna o segundo argumento. COALESCE trabalha com qualquer número de argumentos, não apenas dois.



COALESCE em Ubiq


A ferramenta Ubiq Reporting suporta todas as consultas SQL acima e facilita a visualização dos resultados SQL de diferentes maneiras. Aqui está a consulta SQL COALESCE mencionada acima, no Ubiq.





Precisa de uma ferramenta de relatório para MySQL? O Ubiq facilita a visualização de dados em minutos e o monitoramento em painéis em tempo real. Experimente hoje!