No MariaDB, o
COALESCE() O operador retorna o primeiro valor não NULL na lista ou NULL se não houver valores não NULL. Sintaxe
A sintaxe fica assim:
COALESCE(value,...) Exemplo
Aqui está um exemplo simples para demonstrar:
SELECT COALESCE(null, 'Red', 'Black'); Resultado:
Red
Neste caso,
Red foi o primeiro valor não NULL, então COALESCE() retornou esse valor. Black também não era NULL, mas veio depois de Red e por isso não foi devolvido. Exemplo de banco de dados
Suponha que executemos a seguinte consulta:
SELECT
PetName,
DOB AS "Date of Birth"
FROM Pets; E obtemos o seguinte 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 as duas últimas linhas possuem valores NULL na coluna DOB.
Se quisermos substituir
NULL com outro valor, poderíamos alterar a consulta da seguinte forma: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 | +---------+---------------+
Expressões
COALESCE() retorna o valor atual da primeira expressão que inicialmente não é avaliada como NULL . Portanto, se passarmos uma expressão como esta:SELECT COALESCE( null, 5 * 2 ); Obtemos isso:
10
Quando todos os valores são NULL
Se todos os valores forem
NULL , COALESCE() retorna NULL :SELECT COALESCE( null, null ); Resultado:
NULL
COALESCE() vs IFNULL()
Quando usado com dois valores,
COALESCE() funciona da mesma forma que IFNULL :SET @a = null, @b = 52;
SELECT
COALESCE(@a, @b),
IFNULL(@a, @b); Resultado:
+------------------+----------------+ | COALESCE(@a, @b) | IFNULL(@a, @b) | +------------------+----------------+ | 52 | 52 | +------------------+----------------+
Contagem de argumentos inválida
Usando
COALESCE() sem nenhum argumento resulta em um erro: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