Questo tutorial Oracle SQL fornisce spiegazioni ed esempi per la funzione NVL in Oracle
Cos'è la funzione NVL() in Oracle
La funzione NVL in Oracle è una funzione di annidamento utilizzata per sostituire valori nulli con determinati valori
Nella sintassi sopra
espr1 :sono i valori o l'espressione di origine che possono contenere null. Puoi fornire il nome della colonna, la funzione sul nome della colonna
expr2:è il valore di destinazione che verrà inserito nel caso in cui null venga restituito da expr1
Se espr1 è nullo, NVL restituisce espr2. Se espr1 non è nullo, NVL restituisce espr1.
Punti importanti da notare
(1) Gli argomenti expr1 ed expr2 possono avere qualsiasi tipo di dati. Se i loro tipi di dati sono diversi, Oracle Database converte implicitamente l'uno nell'altro. Se non possono essere convertiti in modo implicito, il database restituisce un errore.
Se espr1 è dati di caratteri, Oracle Database converte espr2 nel tipo di dati di espr1 prima di confrontarli e restituisce VARCHAR2 nel set di caratteri di espr1.
Se expr1 è numerico, Oracle determina quale argomento ha la precedenza numerica più alta, converte implicitamente l'altro argomento in quel tipo di dati e restituisce quel tipo di dati.
Quindi la seguente affermazione avrebbe successo
select nvl(num-col ,10) from <table> select nvl(char-col ,'NA') from <table> select nvl(end_date,'01-MAY-18') from <table>
La seguente istruzione farebbe una conversione implicita
select nvl(char-col ,1) from <table>
La seguente istruzione fallirebbe
select nvl(end_date,'m/a') from <table> select nvl(user_id,'abc') from <table>
Come usare la funzione NVL()
Questa funzione è molto utile quando non vogliamo restituire valori nulli o nel calcolo numerico poiché null trasformerebbe valori interi in null
Andiamo fai un esempio per capirlo
Abbiamo una tabella sales_people che contiene le vendite effettuate dai venditori, la commissione % sulle vendite, lo stipendio delle persone. Vogliamo calcolare le entrate mensili totali per i venditori. Le vendite possono avere valori nulli
La dichiarazione sarebbe
select name,(salary + sales*commission/100) Monthy_income from sales_people;
Restituirà valori nulli di tutte le persone che non hanno effettuato vendite in quel periodo poiché il calcolo avrà valori nulli
Questo può essere risolto usando la funzione nvl come
select name,(salary + nvl(sales,0)*commission/100) Monthly_income from sales_people;
Quindi è chiaramente molto utile durante le operazioni matematiche. La funzione NVL in Oracle è una funzione piuttosto utile e può essere utilizzata in molti luoghi
Legge anche
Funzioni di data SQL di Oracle
Funzione NULLIF in Oracle
Istruzione di aggiornamento in Oracle
Funzione Coalesce in Oracle
Modifica il formato della data in Oracle
https://docs .oracle.com/cd/B19306_01/server.102/b14200/functions105.htm