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