Funzione Oracle NVL

Funzione Oracle Nvl



Un valore nullo è un campo che è stato lasciato vuoto o non ha alcun valore assegnato.

I valori NULL sono comuni nei database, soprattutto quando si importano dati esterni. Pertanto, a meno che una colonna non contenga un vincolo per impedire i valori NULL, il motore di database utilizzerà probabilmente un valore NULL per un valore mancante.







Sebbene i valori NULL siano comuni, possono portare a problemi di database poiché il database non ha alcun valore con cui lavorare. Pertanto, è consigliabile applicare azioni per gestire i valori NULL nelle query.



In questo post impareremo come convertire i valori NULL in una determinata tabella per contenere un valore predefinito che ha meno probabilità di causare errori operativi nel database.



Funzione Oracle NVL

Come accennato, questa funzione ci permette di sostituire i valori NULL con valori più significativi. Di seguito viene fornita la sintassi della funzione:





NVL ( espr1, espr2 ) ;

La funzione accetta due argomenti principali:

espr1 ed espr2 – questo parametro definisce il valore da testare per i valori NULL. Se il valore di expr1 è NULL, la funzione restituirà il valore di expr2.



Entrambe le espressioni possono avere tipi di dati simili o diversi. Se i tipi di dati corrispondenti differiscono, il motore di database può eseguire la conversione implicita per consentire la compatibilità con i tipi di dati. Se è impossibile convertire i tipi di dati corrispondenti, il motore del database genererà un errore.

Esempio di utilizzo della funzione Oracle NVL()

L'esempio seguente mostra l'utilizzo di base della funzione NVL():

Esempio 1

Considera il seguente esempio:

Selezionare liv ( 'ciao' , 'mondo' ) da duale;

Nell'esempio precedente, utilizziamo la funzione NVL() per verificare se la stringa 'ciao' è un valore NULL. Poiché il valore fornito non è nullo, la funzione restituirà la stringa 'ciao'.

Esempio 2

Considera il secondo esempio mostrato di seguito:

Selezionare liv ( nullo, 'mondo' ) da duale;

In questo caso, poiché la prima espressione è un valore NULL, la query restituirà la seconda stringa come mostrato di seguito:

Esempio 3

Possiamo anche utilizzare la funzione NVL() per sostituire i valori NULL in una tabella di database. Considera la tabella dei dipendenti mostrata di seguito:

Selezionare FIRST_NAME, LAST_NAME, EMAIL, SALARY, COMMISSION_PCT da EMPLOYEES dip;

Tabella risultante:

Come possiamo vedere, la colonna commission_pct contiene valori NULl. Possiamo creare una query per sostituire i valori NULL dalla colonna commission_pct con 0, come mostrato nell'esempio seguente:

Selezionare FIRST_NAME, LAST_NAME, EMAIL, STIPENDIO, nvl ( COMMISSIONE_PCT, 0 )
da DIPENDENTI dip;

Nella query di esempio precedente, utilizziamo la funzione NVL() per testare il valore nella colonna commission_pct per NULL. Se è presente un valore NULL, viene restituito 0. In caso contrario, viene restituito il valore originale.

Questo dovrebbe consentirci di sostituire i valori NULL nella colonna con 0, come mostrato nella tabella risultante di seguito:

Possiamo usarlo con un'istruzione UPDATE o memorizzare il valore risultante in una vista tabella.

Conclusione

In questo tutorial, hai imparato come utilizzare la funzione Oracle NVL() per sostituire i valori NULL con i valori predefiniti. È bene tenere presente che sebbene la funzione NVL() assomigli molto alla funzione COALESCE(), la funzione NVL() può restituire solo un singolo valore. Allo stesso tempo, la funzione coalesce() può restituire più valori.

Se stai cercando una funzione che possa accettare più di due argomenti senza utilizzare la funzione coalesce(), considera la funzione NVL2().