I MariaDB er COALESCE() operatoren returnerer den første ikke-NULL-værdi på listen, eller NULL, hvis der ikke er nogen ikke-NULL-værdier.
Syntaks
Syntaksen ser sådan ud:
COALESCE(value,...) Eksempel
Her er et simpelt eksempel til at demonstrere:
SELECT COALESCE(null, 'Red', 'Black'); Resultat:
Red
I dette tilfælde Red var den første ikke-NULL værdi, og så COALESCE() returnerede den værdi.
Black var også ikke-NULL, men det kom efter Red og så det blev ikke returneret.
Databaseeksempel
Antag, at vi kører følgende forespørgsel:
SELECT
PetName,
DOB AS "Date of Birth"
FROM Pets; Og vi får følgende resultat:
+---------+---------------+ | 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 | +---------+---------------+
Vi kan se, at de sidste to rækker har NULL-værdier i DOB-kolonnen.
Hvis vi ville erstatte NULL med en anden værdi, kunne vi ændre forespørgslen som følger:
SELECT
PetName,
COALESCE(DOB, 'None Supplied') AS "Date of Birth"
FROM Pets; Resultat:
+---------+---------------+ | 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 | +---------+---------------+
Udtryk
COALESCE() returnerer den aktuelle værdi af det første udtryk, der oprindeligt ikke evalueres til NULL . Derfor, hvis vi sender et udtryk som dette:
SELECT COALESCE( null, 5 * 2 ); Vi får dette:
10
Når alle værdier er NULL
Hvis alle værdier er NULL , COALESCE() returnerer NULL :
SELECT COALESCE( null, null ); Resultat:
NULL
COALESCE() vs IFNULL()
Når det bruges med to værdier, COALESCE() virker på samme måde som IFNULL :
SET @a = null, @b = 52;
SELECT
COALESCE(@a, @b),
IFNULL(@a, @b); Resultat:
+------------------+----------------+ | COALESCE(@a, @b) | IFNULL(@a, @b) | +------------------+----------------+ | 52 | 52 | +------------------+----------------+
Ugyldigt argumentantal
Brug af COALESCE() uden nogen argumenter resulterer i en fejl:
SELECT COALESCE(); Resultat:
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