I MySQL, 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, 'Fish', 'Rabbit');
Resultat:
Fish
I det här fallet, Fish
var det första icke-NULL-värdet, och så COALESCE()
returnerade det värdet.
Rabbit
var också ett icke-NULL-värde, men det kom efter Fish
och därför returnerades den inte.
När alla värden är NULL
Om alla värden är NULL
, COALESCE()
returnerar NULL
:
SELECT COALESCE( null, null );
Resultat:
NULL
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, 2 * 10 );
Vi får detta:
20
Databasexempel
Anta att vi kör följande fråga:
SELECT
PetName,
PetType
FROM Pets;
Och vi får följande resultat:
PetName PetType ------- ------- Meow Cat Woof Dog Tweet Bird Awk NULL Moo Cow Omph NULL
Vi kan se att två rader 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(PetType, 'Unknown') AS "PetType"
FROM Pets;
Resultat:
PetName PetType ------- ------- Meow Cat Woof Dog Tweet Bird Awk Unknown Moo Cow Omph Unknown
I det här fallet ersatte vi alla NULL-värden med strängen Unknown
.
Det behöver dock inte vara ett snöre. Här är ett annat exempel som ersätter NULL-värden med ett 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
Ogiltigt antal argument
Använder COALESCE()
utan några argument resulterar i ett fel:
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