In SQLite das coalesce()
Die Funktion gibt eine Kopie ihres ersten Nicht-NULL-Arguments zurück, oder NULL, wenn alle Argumente NULL sind.
Es ähnelt dem ifnull()
Funktion, außer dass coalesce()
akzeptiert mehr als zwei Argumente (ifnull()
akzeptiert nur zwei Argumente).
Syntax
Die Syntax lautet wie folgt:
coalesce(X,Y,...)
Das bedeutet, dass Sie zwei oder mehr Argumente angeben können. Die Funktion gibt dann die erste zurück, die nicht NULL ist.
Beispiel
Hier ist ein Beispiel zur Veranschaulichung.
SELECT coalesce(NULL,1);
Ergebnis:
1
Hier habe ich zwei Argumente und coalesce()
bereitgestellt hat den ersten Nicht-NULL-Wert zurückgegeben, der in diesem Fall 1 ist .
Weitere Beispiele
Hier sind weitere Variationen, um zu demonstrieren, wie coalesce()
behandelt jeden Fall.
.mode line
SELECT
coalesce(NULL,NULL,1,2,3),
coalesce(1,NULL,2,3),
coalesce(NULL,3,2,1),
coalesce(1,2,3,NULL),
coalesce(NULL,NULL);
Ergebnis:
coalesce(NULL,NULL,1,2,3) = 1 coalesce(1,NULL,2,3) = 1 coalesce(NULL,3,2,1) = 3 coalesce(1,2,3,NULL) = 1 coalesce(NULL,NULL) =
Es ist also sehr einfach. Es gibt einfach das erste Argument zurück, das nicht NULL ist, unabhängig davon, wie viele Argumente angegeben werden.
Beachten Sie auch, dass NULL zurückgegeben wird, wenn alle Argumente NULL sind.
Datenbankbeispiel
Hier ist ein Beispiel für die Verwendung von coalesce()
Funktion in einer Datenbankabfrage.
.mode column
SELECT
CustomerId,
coalesce(Fax, 'N/A') AS Fax
FROM Customer
LIMIT 5;
Ergebnis:
CustomerId Fax ---------- ------------- 1 +55 (12) 3923 2 N/A 3 N/A 4 N/A 5 +420 2 4172 5
So sieht es ohne die Verwendung von coalesce()
aus Funktion:
.mode column
SELECT
CustomerId,
Fax
FROM Customer
LIMIT 5;
Ergebnis:
CustomerId Fax ---------- ------------------ 1 +55 (12) 3923-5566 2 3 4 5 +420 2 4172 5555
Also das coalesce()
Funktion kann nützlich sein, um eine aussagekräftige Zeichenfolge anstelle von NULL zurückzugeben.
Mit drei Argumenten
Hier ist ein Beispiel für das Hinzufügen eines dritten Arguments. Dadurch können wir mehrere Optionen durchlaufen, bevor wir bei NULL ankommen.
SELECT
CustomerId,
coalesce(Fax, Email, 'N/A') AS "Fax/Email"
FROM Customer
LIMIT 5;
Ergebnis:
CustomerId Fax/Email ---------- ---------------------- 1 +55 (12) 3923-5566 2 [email protected] 3 [email protected] 4 [email protected] 5 +420 2 4172 5555