In MariaDB, de COALESCE() operator retourneert de eerste niet-NULL-waarde in de lijst, of NULL als er geen niet-NULL-waarden zijn.
Syntaxis
De syntaxis gaat als volgt:
COALESCE(value,...) Voorbeeld
Hier is een eenvoudig voorbeeld om te demonstreren:
SELECT COALESCE(null, 'Red', 'Black'); Resultaat:
Red
In dit geval Red was de eerste niet-NULL-waarde, en dus COALESCE() heeft die waarde geretourneerd.
Black was ook niet-NULL, maar kwam na Red en dus werd het niet teruggestuurd.
Databasevoorbeeld
Stel dat we de volgende query uitvoeren:
SELECT
PetName,
DOB AS "Date of Birth"
FROM Pets; En we krijgen het volgende resultaat:
+---------+---------------+ | 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 | +---------+---------------+
We kunnen zien dat de laatste twee rijen NULL-waarden hebben in de DOB-kolom.
Als we NULL willen vervangen met een andere waarde, kunnen we de zoekopdracht als volgt wijzigen:
SELECT
PetName,
COALESCE(DOB, 'None Supplied') AS "Date of Birth"
FROM Pets; Resultaat:
+---------+---------------+ | 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 | +---------+---------------+
Uitdrukkingen
COALESCE() geeft de huidige waarde terug van de eerste uitdrukking die aanvankelijk niet resulteert in NULL . Daarom, als we een uitdrukking als deze doorgeven:
SELECT COALESCE( null, 5 * 2 ); We krijgen dit:
10
Als alle waarden NULL zijn
Als alle waarden NULL zijn , COALESCE() retourneert NULL :
SELECT COALESCE( null, null ); Resultaat:
NULL
COALESCE() vs IFNULL()
Bij gebruik met twee waarden, COALESCE() werkt hetzelfde als IFNULL :
SET @a = null, @b = 52;
SELECT
COALESCE(@a, @b),
IFNULL(@a, @b); Resultaat:
+------------------+----------------+ | COALESCE(@a, @b) | IFNULL(@a, @b) | +------------------+----------------+ | 52 | 52 | +------------------+----------------+
Ongeldig aantal argumenten
COALESCE() gebruiken zonder argumenten resulteert in een fout:
SELECT COALESCE(); Resultaat:
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