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