sql >> Database teknologi >  >> RDS >> Mysql

MySQL COALESCE() Forklaret

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

  1. Hvordan bruger man enums i Oracle?

  2. SQL primær nøgle

  3. Forenkle indlejret store og små bogstaver, når sætning

  4. PostgreSQL:Hvorfor kan psql ikke oprette forbindelse til serveren?