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