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

Cómo usar Coalesce en MySQL

Coalesce es una función útil de MySQL que devuelve automáticamente el primer valor no nulo de una lista de valores. Estos valores se pueden proporcionar mediante literales, nombres de columnas u otras funciones de MySQL. En este artículo, veremos cómo usar Coalesce en MySQL.


Cómo usar Coalesce en MySQL

Estos son los pasos para usar COALSCE en MySQL


Qué es COALESCE en MySQL

La función COALESCE devuelve el primer valor no NULL de una lista de valores. Si todos los valores de la lista son NULL, devuelve NULL. Esta es la sintaxis de la función Coalesce en MySQL.

select coalesce(value1, value2, ..., valuen) 
from table_name;

En la declaración anterior, debe especificar el nombre de la tabla y proporcionar una lista de valores separados por comas.

Aquí hay un par de ejemplos simples para mostrar la funcionalidad de COALESCE.

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

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


Por qué se usa COALESCE en MySQL

COALESCE se usa en MySQL para sustituir valores nulos con alguna otra cadena de su elección. Esto es muy útil para informes y análisis en los que no desea cambiar los datos reales pero necesita informarlos de una manera diferente.

Digamos que tiene la siguiente tabla ventas (id, producto, fecha_pedido, cantidad) que contiene 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 |
+------+---------+------------+--------+

Ahora usaremos COALESCE para obtener el primer valor no nulo de cada fila.

mysql> select coalesce(id, product, order_date, amount) from sales;
+-------------------------------------------+
| coalesce(id, product, order_date, amount) |
+-------------------------------------------+
| A                                         |
| 2                                         |
| C                                         |
| 4                                         |
+-------------------------------------------+

Como puede ver, COALESCE devuelve valores no nulos de cada fila.

También puede usar la función COALESCE para sustituir valores nulos con cadenas personalizadas. En el siguiente ejemplo, reemplazaremos cada valor nulo con la cadena '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 frente a IFNULL MySQL

Aunque IFNULL también se puede usar para sustituir valores NULL, solo puede aceptar 2 argumentos, devuelve el primer argumento si es nulo, de lo contrario devuelve el segundo argumento. COALESCE funciona con cualquier cantidad de argumentos, no solo con dos.


COALESCE en Ubiq

La herramienta Ubiq Reporting admite todas las consultas SQL anteriores y facilita la visualización de los resultados SQL de diferentes maneras. Aquí está la consulta COALESCE SQL mencionada anteriormente, en Ubiq.

¿Necesita una herramienta de informes para MySQL? Ubiq facilita la visualización de datos en minutos y el monitoreo en paneles en tiempo real. ¡Pruébalo hoy!