I MySQL 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, 'Fish', 'Rabbit'); Resultat:
Fish
I dette tilfælde Fish var den første ikke-NULL værdi, og så COALESCE() returnerede den værdi.
Rabbit var også en ikke-NULL-værdi, men den kom efter Fish og så det blev ikke returneret.
Når alle værdier er NULL
Hvis alle værdier er NULL , COALESCE() returnerer NULL :
SELECT COALESCE( null, null ); Resultat:
NULL
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, 2 * 10 ); Vi får dette:
20
Databaseeksempel
Antag, at vi kører følgende forespørgsel:
SELECT
PetName,
PetType
FROM Pets; Og vi får følgende resultat:
PetName PetType ------- ------- Meow Cat Woof Dog Tweet Bird Awk NULL Moo Cow Omph NULL
Vi kan se, at 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(PetType, 'Unknown') AS "PetType"
FROM Pets; Resultat:
PetName PetType ------- ------- Meow Cat Woof Dog Tweet Bird Awk Unknown Moo Cow Omph Unknown
I dette tilfælde erstattede vi alle NULL-værdier med strengen Unknown .
Det behøver dog ikke at være en snor. Her er et andet eksempel, der erstatter NULL-værdier med et heltal:
SELECT
EmployeeName,
Salary,
COALESCE(Salary, 0) AS "Salary (adjusted)"
FROM Employees; Resultat:
EmployeeName Salary Salary (adjusted) -------------- ------ ----------------- Homer Einstein NULL 0 Bart Hawking 100000 100000
Ugyldigt antal argumenter
Brug af COALESCE() uden argumenter resulterer i en fejl:
SELECT COALESCE(); Resultat:
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