Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle NULLIF()-Funktion

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