sql >> Database teknologi >  >> RDS >> Oracle

Oracle NULLIF() funktion

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 CHAR

SQL> 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


  1. SQL Server Skift TempDB-filplacering

  2. Sådan oprettes brugerdefineret registreringsdatatypevariabel i Oracle-databasen

  3. Jeg kan ikke starte SQL Server-browseren

  4. Hvordan tilføjer man PostgreSQL-datakilde til WildFly 9.0?