Deze SQL-tutorial biedt uitleg, voorbeelden voor de NULLIF-functie in Oracle
NULLIF-functie is een zeer nuttige functie. Het vergelijkt twee waarden en retourneert null als de waarden hetzelfde zijn, anders retourneer de eerste waarde
expr1 :het zijn de bronwaarden of expressie die worden vergeleken met expr2
expr2 :Het is ook de bronwaarde die wordt vergeleken met expr1
U kunt de letterlijke NULL niet specificeren voor de eerste waarde
SQL> select nullif(NULL,1) from dual;
select nullif(NULL,1) from dual
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected - got CHAR
Gebruik en voorbeeld
SQL> select nullif(1,1) from dual; NULLIF(1,1)
----------- SQL> select nullif(1,2) from dual; NULLIF(1,2)
-----------
1
Belangrijke opmerking
1)Deze instructie lijkt erg op de case-instructie en is equivalent als
CASE WHEN expr1=expr2 THEN NULL ELSE expr1 END
2) Als beide argumenten numerieke datatypes zijn, bepaalt Oracle Database het argument met de hogere numerieke prioriteit, converteert impliciet het andere argument naar dat datatype en retourneert dat datatype. Als de argumenten niet numeriek zijn, moeten ze van hetzelfde orakel-gegevenstype zijn, anders geeft Oracle een fout terug.
SQL> select nullif(1,'apple') from dual;
select nullif(1,'apple') from dual
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected NUMBER got CHARSQL> select nullif('apple',1) from dual;
select nullif('apple',1) from dual
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected CHAR got NUMBER
Meer voorbeelden
select first_name, length(first_name),last_name, length(last_name), nullif(length(first_name),length(last_name)) from emp; SELECT NULLIF('Sunday', 'Friday') AS check FROM dual;
Een ander gebruiksvoorbeeld van de NULLIF-functie is als u de werknemers wilt weergeven die van baan zijn veranderd sinds ze zijn aangenomen, zoals aangegeven door een job_id in de job_history-tabel die verschilt van de huidige job_id in de werknemerstabel
select emp_name,nullif(b.job_id,a.job_id) old_job from employees a, job_history b where a.emp_id=b.emp_id;
FAQ voor Nullif-functie
Hoe een fout door delen door nul te voorkomen met behulp van de NULLIF-functie
We krijgen de fout bij deling door nul als de noemer in de deling nul is. We kunnen dit vermijden door de NULLIF-functie te gebruiken zoals hieronder
selecteer 100/ nullif(0,0) van dual;
Nu hier, aangezien beide waarden gelijk zijn, zal Nullif null retourneren en de hele expressie in plaats daarvan null van enige fout. Hier is hoe u kunt gebruiken bij het omgaan met echte kolommen
selecteer col2/ nullif(col1,0) van exp;
Gerelateerde artikelen
Update-instructie in Oracle
NVL2-functie in Oracle
NVL-functie in Oracle
Coalesce-functie in Oracle
Enkele rij-functies in sql
Verwijderen uit tabelinstructie in Oracle
Externe bron
Oracle-referentie voor NULLIF