In MariaDB die 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, 'Red', 'Black'); Ergebnis:
Red
In diesem Fall Red war der erste Nicht-NULL-Wert, also COALESCE() diesen Wert zurückgegeben.
Black war auch nicht NULL, kam aber nach Red und so wurde es nicht zurückgegeben.
Datenbankbeispiel
Angenommen, wir führen die folgende Abfrage aus:
SELECT
PetName,
DOB AS "Date of Birth"
FROM Pets; Und wir erhalten das folgende Ergebnis:
+---------+---------------+ | PetName | Date of Birth | +---------+---------------+ | Fluffy | 2020-11-20 | | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | | Bark | NULL | | Meow | NULL | +---------+---------------+
Wir können sehen, dass die letzten beiden 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(DOB, 'None Supplied') AS "Date of Birth"
FROM Pets; Ergebnis:
+---------+---------------+ | PetName | Date of Birth | +---------+---------------+ | Fluffy | 2020-11-20 | | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | | Bark | None Supplied | | Meow | None Supplied | +---------+---------------+
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, 5 * 2 ); Wir bekommen das:
10
Wenn alle Werte NULL sind
Wenn alle Werte NULL sind , COALESCE() gibt NULL zurück :
SELECT COALESCE( null, null ); Ergebnis:
NULL
COALESCE() vs IFNULL()
Bei Verwendung mit zwei Werten COALESCE() funktioniert genauso wie IFNULL :
SET @a = null, @b = 52;
SELECT
COALESCE(@a, @b),
IFNULL(@a, @b); Ergebnis:
+------------------+----------------+ | COALESCE(@a, @b) | IFNULL(@a, @b) | +------------------+----------------+ | 52 | 52 | +------------------+----------------+
Ungültige Argumentanzahl
Verwenden von COALESCE() ohne Argumente führt zu einem Fehler:
SELECT COALESCE(); Ergebnis:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1