Dieses SQL-Tutorial enthält Erklärungen und Beispiele für die NULLIF-Funktion in Oracle
Die NULLIF-Funktion ist eine sehr nützliche Funktion. Sie vergleicht zwei Werte und gibt Null zurück, wenn die Werte gleich sind, andernfalls gibt sie den ersten Wert zurück
Ausdruck1 :Es sind die Quellwerte oder der Ausdruck, der mit expr2 verglichen wird
expr2 :Es ist auch der Quellwert, der mit expr1 verglichen wird
Sie können für den ersten Wert nicht das Literal NULL angeben
SQL> select nullif(NULL,1) from dual;
select nullif(NULL,1) from dual
*
ERROR at line 1:
ORA-00932:inconsistent datatypes:erwartet - CHAR erhalten
Verwendung und Beispiel
SQL> wähle nullif(1,1) aus dual;NULLIF(1,1)
-----------SQL> wähle nullif(1,2) aus dual;NULLIF( 1,2)
-----------
1
Wichtiger Hinweis
1) Diese Anweisung ist der case-Anweisung sehr ähnlich und entspricht
CASE WHEN expr1=expr2 THEN NULL ELSE expr1 END
2) Wenn beide Argumente numerische Datentypen sind, bestimmt Oracle Database das Argument mit dem höheren numerischen Vorrang, konvertiert das andere Argument implizit in diesen Datentyp und gibt diesen Datentyp zurück. Wenn die Argumente nicht numerisch sind, müssen sie denselben Oracle-Datentyp haben, oder Oracle gibt einen Fehler zurück.
SQL> select nullif(1,'apple') from dual;
select nullif(1,'apple') from dual
*
FEHLER in Zeile 1:
ORA-00932 :inkonsistente Datentypen:erwartete NUMBER hat CHAR
SQL> select nullif('apple',1) from dual;
select nullif('apple',1) from dual
*
FEHLER in Zeile 1:
ORA-00932 :inkonsistente Datentypen:erwartetes CHAR hat NUMBER
Weitere Beispiele
select first_name, length(first_name),last_name,length(last_name), nullif(length(first_name),length(last_name)) from emp;SELECT NULLIF('Sonntag', 'Freitag') AS check FROM dual;
Ein weiterer Anwendungsfall der NULLIF-Funktion ist, wenn Sie die Mitarbeiter auflisten möchten, die seit ihrer Einstellung die Stelle gewechselt haben, wie durch eine job_id in der job_history-Tabelle angegeben, die sich von der aktuellen job_id in der employee-Tabelle unterscheidet
select emp_name,nullif(b.job_id,a.job_id) old_job from employee a, job_history b where a.emp_id=b.emp_id;
FAQ zur Nullif-Funktion
Wie man mit Hilfe der NULLIF-Funktion den Fehler der Division durch Null vermeidet
Wir erhalten den Dividieren-durch-Null-Fehler, wenn der Nenner bei der Division null ist. Wir können dies vermeiden, indem wir die NULLIF-Funktion wie unten verwenden
wählen Sie 100/ nullif(0,0) aus dual;
Nun hier, da beide Werte gleich sind, gibt Nullif null zurück und der gesamte Ausdruck gibt stattdessen null zurück von jedem Fehler. So können Sie beim Umgang mit echten Spalten
select col2/ nullif(col1,0) from exp;
Verwandte Artikel
Update-Anweisung in Oracle
NVL2-Funktion in Oracle
NVL-Funktion in Oracle
Coalesce-Funktion in Oracle
Einzelzeilenfunktionen in SQL
Delete from Table-Anweisung in Oracle
Externe Ressource
Oracle-Referenz für NULLIF