In MySQL is 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, 'Fish', 'Rabbit'); Resultaat:
Fish
In dit geval Fish was de eerste niet-NULL-waarde, en dus COALESCE() heeft die waarde geretourneerd.
Rabbit was ook een niet-NULL-waarde, maar kwam na Fish en dus werd het niet teruggestuurd.
Als alle waarden NULL zijn
Als alle waarden NULL zijn , COALESCE() retourneert NULL :
SELECT COALESCE( null, null ); Resultaat:
NULL
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, 2 * 10 ); We krijgen dit:
20
Databasevoorbeeld
Stel dat we de volgende query uitvoeren:
SELECT
PetName,
PetType
FROM Pets; En we krijgen het volgende resultaat:
PetName PetType ------- ------- Meow Cat Woof Dog Tweet Bird Awk NULL Moo Cow Omph NULL
We kunnen zien dat 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(PetType, 'Unknown') AS "PetType"
FROM Pets; Resultaat:
PetName PetType ------- ------- Meow Cat Woof Dog Tweet Bird Awk Unknown Moo Cow Omph Unknown
In dit geval hebben we alle NULL-waarden vervangen door de tekenreeks Unknown .
Het hoeft echter geen string te zijn. Hier is nog een voorbeeld dat NULL-waarden vervangt door een geheel getal:
SELECT
EmployeeName,
Salary,
COALESCE(Salary, 0) AS "Salary (adjusted)"
FROM Employees; Resultaat:
EmployeeName Salary Salary (adjusted) -------------- ------ ----------------- Homer Einstein NULL 0 Bart Hawking 100000 100000
Ongeldig aantal argumenten
COALESCE() gebruiken zonder argumenten resulteert in een fout:
SELECT COALESCE(); Resultaat:
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1