V MariaDB, COALESCE() Operátor vrátí první hodnotu v seznamu, která není NULL, nebo NULL, pokud neexistují žádné jiné hodnoty než NULL.
Syntaxe
Syntaxe vypadá takto:
COALESCE(value,...) Příklad
Zde je jednoduchý příklad k demonstraci:
SELECT COALESCE(null, 'Red', 'Black'); Výsledek:
Red
V tomto případě Red byla první hodnota bez NULL, a tak COALESCE() vrátil tuto hodnotu.
Black byl také jiný než NULL, ale přišel po Red a tak to nebylo vráceno.
Příklad databáze
Předpokládejme, že spustíme následující dotaz:
SELECT
PetName,
DOB AS "Date of Birth"
FROM Pets; A dostaneme následující výsledek:
+---------+---------------+ | 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 | +---------+---------------+
Vidíme, že poslední dva řádky mají ve sloupci DOB hodnoty NULL.
Pokud bychom chtěli nahradit NULL s jinou hodnotou bychom mohli dotaz změnit následovně:
SELECT
PetName,
COALESCE(DOB, 'None Supplied') AS "Date of Birth"
FROM Pets; Výsledek:
+---------+---------------+ | 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 | +---------+---------------+
Výrazy
COALESCE() vrátí aktuální hodnotu prvního výrazu, který se zpočátku nevyhodnotí jako NULL . Pokud tedy předáme výraz jako tento:
SELECT COALESCE( null, 5 * 2 ); Dostáváme toto:
10
Když jsou všechny hodnoty NULL
Pokud jsou všechny hodnoty NULL , COALESCE() vrátí NULL :
SELECT COALESCE( null, null ); Výsledek:
NULL
COALESCE() vs IFNULL()
Při použití se dvěma hodnotami COALESCE() funguje stejně jako IFNULL :
SET @a = null, @b = 52;
SELECT
COALESCE(@a, @b),
IFNULL(@a, @b); Výsledek:
+------------------+----------------+ | COALESCE(@a, @b) | IFNULL(@a, @b) | +------------------+----------------+ | 52 | 52 | +------------------+----------------+
Neplatný počet argumentů
Pomocí COALESCE() bez jakýchkoli argumentů vede k chybě:
SELECT COALESCE(); Výsledek:
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