Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL COALESCE() erklärt

In MySQL das COALESCE() Der Operator gibt den ersten Nicht-NULL-Wert in der Liste zurück, oder NULL, wenn es keine Nicht-NULL-Werte gibt.

Syntax

Die Syntax lautet wie folgt:

COALESCE(value,...)

Beispiel

Hier ist ein einfaches Beispiel zur Veranschaulichung:

SELECT COALESCE(null, 'Fish', 'Rabbit');

Ergebnis:

Fish

In diesem Fall Fish war der erste Nicht-NULL-Wert, also COALESCE() diesen Wert zurückgegeben.

Rabbit war auch kein NULL-Wert, kam aber nach Fish und so wurde es nicht zurückgegeben.

Wenn alle Werte NULL sind

Wenn alle Werte NULL sind , COALESCE() gibt NULL zurück :

SELECT COALESCE( null, null );

Ergebnis:

NULL

Ausdrücke

COALESCE() gibt den aktuellen Wert des ersten Ausdrucks zurück, der anfänglich nicht zu NULL ausgewertet wird . Wenn wir also einen Ausdruck wie diesen übergeben:

SELECT COALESCE( null, 2 * 10 );

Wir bekommen das:

20

Datenbankbeispiel

Angenommen, wir führen die folgende Abfrage aus:

SELECT
  PetName,
  PetType
FROM Pets;

Und wir erhalten das folgende Ergebnis:

PetName	PetType
------- -------
Meow	Cat
Woof	Dog
Tweet	Bird
Awk	NULL
Moo	Cow
Omph	NULL

Wir können sehen, dass zwei Zeilen NULL-Werte in der DOB-Spalte haben.

Wenn wir NULL ersetzen wollten mit einem anderen Wert könnten wir die Abfrage wie folgt ändern:

SELECT
  PetName,
  COALESCE(PetType, 'Unknown') AS "PetType"
FROM Pets;

Ergebnis:

PetName	PetType
------- -------
Meow	Cat
Woof	Dog
Tweet	Bird
Awk	Unknown
Moo	Cow
Omph	Unknown

In diesem Fall haben wir alle NULL-Werte durch die Zeichenfolge Unknown ersetzt .

Es muss aber kein String sein. Hier ist ein weiteres Beispiel, das NULL-Werte durch eine ganze Zahl ersetzt:

SELECT 
  EmployeeName,
  Salary,
  COALESCE(Salary, 0) AS "Salary (adjusted)"
FROM Employees;

Ergebnis:

EmployeeName	Salary	Salary (adjusted)
--------------  ------  -----------------
Homer Einstein	NULL	0
Bart Hawking	100000	100000

Ungültige Argumentanzahl

Verwenden von COALESCE() ohne Argumente führt zu einem Fehler:

SELECT COALESCE();

Ergebnis:

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