sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona COALESCE() en MariaDB

En MariaDB, el COALESCE() operador devuelve el primer valor no NULL en la lista, o NULL si no hay valores no NULL.

Sintaxis

La sintaxis es así:

COALESCE(value,...)

Ejemplo

Aquí hay un ejemplo simple para demostrarlo:

SELECT COALESCE(null, 'Red', 'Black');

Resultado:

Red

En este caso, Red fue el primer valor no NULL, por lo que COALESCE() devolvió ese valor.

Black tampoco era NULL, pero venía después de Red por lo que no fue devuelto.

Ejemplo de base de datos

Supongamos que ejecutamos la siguiente consulta:

SELECT
    PetName,
    DOB AS "Date of Birth"
FROM Pets;

Y obtenemos el siguiente resultado:

+---------+---------------+
| PetName | Date of Birth |
+---------+---------------+
| Fluffy  | 2020-11-20    |
| Fetch   | 2019-08-16    |
| Scratch | 2018-10-01    |
| Wag     | 2020-03-15    |
| Tweet   | 2020-11-28    |
| Fluffy  | 2020-09-17    |
| Bark    | NULL          |
| Meow    | NULL          |
+---------+---------------+

Podemos ver que las dos últimas filas tienen valores NULL en la columna DOB.

Si quisiéramos reemplazar NULL con otro valor, podríamos cambiar la consulta de la siguiente manera:

SELECT
    PetName,
    COALESCE(DOB, 'None Supplied') AS "Date of Birth"
FROM Pets;

Resultado:

+---------+---------------+
| PetName | Date of Birth |
+---------+---------------+
| Fluffy  | 2020-11-20    |
| Fetch   | 2019-08-16    |
| Scratch | 2018-10-01    |
| Wag     | 2020-03-15    |
| Tweet   | 2020-11-28    |
| Fluffy  | 2020-09-17    |
| Bark    | None Supplied |
| Meow    | None Supplied |
+---------+---------------+

Expresiones

COALESCE() devuelve el valor actual de la primera expresión que inicialmente no se evalúa como NULL . Por lo tanto, si pasamos una expresión como esta:

SELECT COALESCE( null, 5 * 2 );

Obtenemos esto:

10

Cuando todos los valores son NULL

Si todos los valores son NULL , COALESCE() devuelve NULL :

SELECT COALESCE( null, null );

Resultado:

NULL

COALESCE() vs IFNULL()

Cuando se usa con dos valores, COALESCE() funciona igual que IFNULL :

SET @a = null, @b = 52;
SELECT 
    COALESCE(@a, @b), 
    IFNULL(@a, @b);

Resultado:

+------------------+----------------+
| COALESCE(@a, @b) | IFNULL(@a, @b) |
+------------------+----------------+
| 52               | 52             |
+------------------+----------------+

Recuento de argumentos no válidos

Usando COALESCE() sin ningún argumento da como resultado un error:

SELECT COALESCE();

Resultado:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1