Denne SQL-tutorial giver forklaringer, eksempler på NULLIF-funktionen i Oracle
NULLIF-funktionen er en meget nyttig funktion. Den sammenligner to værdier og returnerer null, hvis værdierne er de samme, ellers returnerer den første værdi
udtr1 :det er kildeværdierne eller udtrykket, der skal sammenlignes med expr2
expr2 :Det er også kildeværdien, der sammenlignes med udtr1
Du kan ikke angive den bogstavelige NULL for den første værdi
SQL> select nullif(NULL,1) from dual;
select nullif(NULL,1) from dual
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected - got CHAR
Brug og eksempel
SQL> select nullif(1,1) from dual; NULLIF(1,1)
----------- SQL> select nullif(1,2) from dual; NULLIF(1,2)
-----------
1
Vigtig bemærkning
1) Denne sætning minder meget om kasussætning, og den svarer til
CASE WHEN expr1=expr2 THEN NULL ELSE expr1 END
2) Hvis begge argumenter er numeriske datatyper, bestemmer Oracle Database argumentet med den højere numeriske forrang, konverterer implicit det andet argument til den datatype og returnerer den datatype. Hvis argumenterne ikke er numeriske, skal de være af samme oracle-datatype, ellers returnerer Oracle en fejl.
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
Flere eksempler
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;
Et andet anvendelsestilfælde af NULLIF-funktionen vil være, hvis du vil angive de medarbejdere, der har skiftet job, siden de blev ansat, som angivet ved et job_id i job_history-tabellen forskelligt fra det aktuelle job_id i medarbejdertabellen
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;
Ofte stillede spørgsmål til Nullif-funktionen
Sådan undgår du divider med nul fejl ved hjælp af NULLIF-funktionen
Vi får divideret med nul fejl, hvis nævneren i divisionen er nul. Vi kan undgå ved at bruge NULLIF-funktionen som nedenfor
vælg 100/ nullif(0,0) fra dual;
Nu her, da begge værdier er ens, vil Nullif returnere null og hele udtryk returnerer null i stedet for af enhver fejl. Her er hvordan du kan bruge, når du har at gøre med ægte kolonne
vælg col2/ nullif(col1,0) fra exp;
Relaterede artikler
Opdater sætning i Oracle
NVL2-funktion i Oracle
NVL-funktion i Oracle
Coalesce-funktion i Oracle
Enkeltrække-funktioner i sql
Slet fra tabelsætning i Oracle
Ekstern ressource
Oracle Reference for NULLIF