Zusammenfassung: In diesem Tutorial erfahren Sie, wie Sie die Oracle COALESCE()
-Funktion verwenden, um die ersten Nicht-Null-Argumente in einer Liste zurückzugeben.
Einführung in die Oracle COALESCE ()-Funktion
Die Oracle COALESCE()
– Funktion akzeptiert eine Liste von Argumenten und gibt das erste zurück, das ausgewertet wird ein Nicht-Null-Wert.,
Im Folgenden wird die Syntax der Oracle-Funktion COALESCE()
veranschaulicht:
In dieser Syntax gibt die Funktion COALESCE()
den ersten Nicht-Null-Ausdruck in der Liste zurück. Es erfordert mindestens zwei Ausdrücke. Falls alle Ausdrücke auf null ausgewertet werden, gibt die Funktion null zurück.,
Das folgende Beispiel gibt eins zurück, weil es das erste Nicht-Null-Argument ist:
Das folgende Beispiel gibt null zurück, weil alle Argumente null sind:
Rückgabetyp
Wenn alle Argumente den gleichen Datentyp haben, wird die COALESCE()
Funktion gibt einen Wert dieses Datentyps.
Wenn die Argumente unterschiedliche Datentypen haben, konvertiert die Funktion COALESCE()
implizit alle Argumente in den Datentyp des ersten Nicht-Null-Arguments., Falls die Konvertierung fehlschlägt, gibt Oracle einen Fehler aus.
Das folgende Beispiel gibt einen Wert mit Zeichentyp zurück, da alle Argumente Zeichen sind.,
In ähnlicher Weise gibt das folgende Beispiel einen Wert mit numerischem Typ zurück:
Das folgende Beispiel verwendet jedoch Argumente verschiedener Typen für die Funktion COALESCE()
:
Oracle gab den folgenden Fehler aus:
Da die COALESCE()
– Funktion versuchte, den Zeichentyp des dritten Arguments in einen numerischen Typ des zweiten Arguments zu konvertieren, der zu einem Fehler führte.,
Kurzschlussauswertung
Die Funktion COALESCE()
verwendet die Kurzschlussauswertung. Dies bedeutet, dass die Funktion die Auswertung der verbleibenden Ausdrücke stoppt, sobald sie den ersten findet, der zu einem Wert ungleich Null ausgewertet wird.
Betrachten Sie das folgende Beispiel:
In diesem Beispiel hat die Funktion COALESCE()
nur den ersten Ausdruck ausgewertet, da das Ergebnis des ersten Ausdrucks zwei (1+1) war. Der zweite Ausdruck wurde nicht ausgewertet (1/0). Wenn dies geschehen wäre, hätte Oracle die Division durch Null Fehler ausgegeben.,
Oracle COALESCE () Beispiel
Lassen Sie uns eine Beispieltabelle zum Testen einrichten.
Angenommen, Sie müssen Notfallkontakte von Mitarbeitern mit verschiedenen Telefonnummern aufzeichnen: Arbeitstelefon, Haustelefon und Mobiltelefon. Dazu erstellen Sie eine neue Tabelle mit dem Namen emergency_contacts
wie folgt:
Die folgenden Anweisungen fügen einige Notfallkontakte in die Tabelle ein:
Einige Kontakte haben nur Arbeitstelefon, während andere möglicherweise ein Telefon zu Hause und ein Mobiltelefon haben oder überhaupt keine Telefonnummer haben.,
Die folgende Abfrage ruft die Mitarbeiter und ihre Notfallkontakte mit Telefonnummern ab:
In diesem Beispiel haben wir die Funktion COALESCE()
verwendet, um das Telefon zu Hause, das Arbeitstelefon oder das Mobiltelefon auszuwählen, falls jedes verfügbar ist. Falls keine Telefonnummern verfügbar sind, haben wir N/A
literal string zurückgegeben, der für not available steht.,
Das Folgende zeigt das Ergebnis der Abfrage:
Oracle COALESCE() und CASE expression
Sie können die Funktion anstelle des längeren CASE
Ausdruck, wenn es darum geht, in mehreren Ausdrücken auf null zu testen. DieCOALESCE()
– Funktion ist prägnanter als einCASE
– Ausdruck, der Nullauswertungen beinhaltet.,
If you check for NULL in two expressions, the COALESCE()
function is equivalent to the CASE
expression.
For example, the following COALESCE()
function:
is equivalent to:
Likewise,
is equivalent to
Oracle COALESCE() vs. NVL()
The COALESCE()
function is a part of SQL ANSI-92 standard while NVL()
function is Oracle specific.,
Bei zwei Ausdrücken scheinen die COALESCE()
– Funktion und NVL()
ähnlich zu sein, aber ihre Implementierungen sind unterschiedlich. Siehe die folgenden Anweisungen:
Beide Anweisungen geben das gleiche Ergebnis zurück, das eins ist. Die Funktion COALESCE()
wertet jedoch nur den ersten Ausdruck aus, um das Ergebnis zu bestimmen, während die Funktion NVL()
beide Ausdrücke auswertet.,
Sehen wir uns folgendes Beispiel an:
Die obige Anweisung gab 1 zurück, während das folgende Beispiel einen Fehler verursacht:
Der Fehler lautet:
Da die Funktion NVL()
den zweiten Ausdruck ausgewertet hat 1/0
das verursacht den Fehler.
In diesem Tutorial haben Sie gelernt, wie Sie mit der Oracle COALESCE()
-Funktion den ersten Nicht-Null-Ausdruck in einer Liste von Ausdrücken zurückgeben.
- War dieses tutorial hilfreich?,
- YesNo