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

Come utilizzare la funzione NVL() in Oracle

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