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