I MariaDB, COALESCE() operatorn returnerar det första icke-NULL-värdet i listan, eller NULL om det inte finns några icke-NULL-värden.
Syntax
Syntaxen ser ut så här:
COALESCE(value,...) Exempel
Här är ett enkelt exempel att visa:
SELECT COALESCE(null, 'Red', 'Black'); Resultat:
Red
I det här fallet, Red var det första icke-NULL-värdet, och så COALESCE() returnerade det värdet.
Black var också icke-NULL, men det kom efter Red och därför returnerades den inte.
Databasexempel
Anta att vi kör följande fråga:
SELECT
PetName,
DOB AS "Date of Birth"
FROM Pets; Och vi får följande 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 att de två sista raderna har NULL-värden i DOB-kolumnen.
Om vi ville ersätta NULL med ett annat värde kan vi ändra frågan enligt följande:
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 | +---------+---------------+
Uttryck
COALESCE() returnerar det aktuella värdet för det första uttrycket som initialt inte evalueras till NULL . Därför, om vi skickar ett uttryck som detta:
SELECT COALESCE( null, 5 * 2 ); Vi får detta:
10
När alla värden är NULL
Om alla värden är NULL , COALESCE() returnerar NULL :
SELECT COALESCE( null, null ); Resultat:
NULL
COALESCE() kontra IFNULL()
När den används med två värden, COALESCE() fungerar på samma sätt som IFNULL :
SET @a = null, @b = 52;
SELECT
COALESCE(@a, @b),
IFNULL(@a, @b); Resultat:
+------------------+----------------+ | COALESCE(@a, @b) | IFNULL(@a, @b) | +------------------+----------------+ | 52 | 52 | +------------------+----------------+
Ogiltigt antal argument
Använder COALESCE() utan några argument resulterar i ett fel:
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