MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come funziona COALESCE() in MariaDB

In MariaDB, il COALESCE() l'operatore restituisce il primo valore non NULL nell'elenco o NULL se non sono presenti valori non NULL.

Sintassi

La sintassi è questa:

COALESCE(value,...)

Esempio

Ecco un semplice esempio da dimostrare:

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

Risultato:

Red

In questo caso, Red era il primo valore non NULL, quindi COALESCE() restituito quel valore.

Black era anche non NULL, ma veniva dopo Red e quindi non è stato restituito.

Esempio di database

Supponiamo di eseguire la seguente query:

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

E otteniamo il seguente risultato:

+---------+---------------+
| 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          |
+---------+---------------+

Possiamo vedere che le ultime due righe hanno valori NULL nella colonna DOB.

Se volessimo sostituire NULL con un altro valore, potremmo modificare la query come segue:

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

Risultato:

+---------+---------------+
| 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 |
+---------+---------------+

Espressioni

COALESCE() restituisce il valore corrente della prima espressione che inizialmente non restituisce NULL . Pertanto, se passiamo un'espressione come questa:

SELECT COALESCE( null, 5 * 2 );

Otteniamo questo:

10

Quando tutti i valori sono NULL

Se tutti i valori sono NULL , COALESCE() restituisce NULL :

SELECT COALESCE( null, null );

Risultato:

NULL

COALESCE() rispetto a IFNULL()

Se utilizzato con due valori, COALESCE() funziona come IFNULL :

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

Risultato:

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

Conteggio argomenti non valido

Usando COALESCE() senza alcun argomento genera un errore:

SELECT COALESCE();

Risultato:

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