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

Funzione Oracle NULLIF()

Questo tutorial SQL fornisce spiegazioni ed esempi per la funzione NULLIF in Oracle

La funzione NULLIF è una funzione molto utile. Confronta due valori e restituisce null se i valori sono gli stessi, altrimenti restituisce il primo valore

espr1 :sono i valori di origine o l'espressione che verrà confrontata con expr2
expr2 :è anche il valore sorgente che viene confrontato con expr1

Non è possibile specificare il valore NULL letterale per il primo valore

SQL> select nullif(NULL,1) from dual;
select nullif(NULL,1) from dual
*
ERROR at line 1:
ORA-00932:inconsistent datatypes:previsto - ottenuto CHAR

Utilizzo ed esempio

SQL> seleziona nullif(1,1) da dual;NULLIF(1,1)
-----------SQL> seleziona nullif(1,2) da dual;NULLIF( 1,2)
-----------
1

Nota importante

1)Questa istruzione è molto simile alla dichiarazione case ed è equivalente a
CASE WHEN expr1=expr2 THEN NULL ELSE expr1 END

2) Se entrambi gli argomenti sono tipi di dati numerici, Oracle Database determina l'argomento con la precedenza numerica più alta, converte implicitamente l'altro argomento in quel tipo di dati e restituisce quel tipo di dati. Se gli argomenti non sono numerici, devono essere dello stesso tipo di dati Oracle, altrimenti Oracle restituisce un errore.

SQL> select nullif(1,'apple') from dual;
select nullif(1,'apple') from dual
*
ERROR at line 1:
ORA-00932 :tipi di dati incoerenti:NUMBER previsto ha ottenuto CHAR

SQL> select nullif('apple',1) from dual;
select nullif('apple',1) from dual
*
ERROR at line 1:
ORA-00932 :tipi di dati incoerenti:previsto CHAR ottenuto NUMBER

Altri esempi

seleziona nome, lunghezza(nome),cognome,lunghezza(cognome), nullif(lunghezza(nome),lunghezza(cognome)) da emp;SELECT NULLIF('domenica', 'venerdì') AS check FROM dual;

Un altro caso d'uso della funzione NULLIF sarà se si desidera elencare i dipendenti che hanno cambiato lavoro da quando sono stati assunti, come indicato da un job_id nella tabella job_history diverso dall'attuale job_id nella tabella dipendenti

select emp_name,nullif(b.job_id,a.job_id) old_job dai dipendenti a, job_history b dove a.emp_id=b.emp_id;

Domande frequenti sulla funzione Nullif

Come evitare errori di divisione per zero con l'aiuto della funzione NULLIF

Otteniamo l'errore di divisione per zero se il denominatore nella divisione è zero. Possiamo evitare usando la funzione NULLIF come di seguito
select 100/ nullif(0,0) from dual;
Ora qui poiché entrambi i valori sono uguali, Nullif restituirà null e l'intera espressione restituirà invece null di qualsiasi errore. Ecco come puoi usarlo quando hai a che fare con una colonna reale
select col2/ nullif(col1,0) from exp;

Articoli correlati

Istruzione di aggiornamento in Oracle
Funzione NVL2 in Oracle
Funzione NVL in Oracle
Funzione Coalesce in Oracle
Funzioni a riga singola in sql
Istruzione Elimina dalla tabella in Oracle

Risorsa esterna
Riferimento Oracle per NULLIF