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