MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como COALESCE() funciona no MariaDB


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