Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment utiliser la fonction NVL() dans Oracle

Ce tutoriel Oracle SQL fournit des explications, des exemples pour la fonction NVL dans Oracle

Qu'est-ce que la fonction NVL() dans Oracle

La fonction NVL dans Oracle est une fonction d'imbrication utilisée pour remplacer les valeurs nulles par certaines valeurs

Dans la syntaxe ci-dessus

expr1 :ce sont les valeurs ou l'expression source qui peuvent contenir null. Vous pouvez fournir le nom de la colonne, fonction sur le nom de la colonne
expr2 :c'est la valeur cible qui sera placée au cas où la valeur nulle serait renvoyée par expr1

Si expr1 est nul, alors NVL renvoie expr2. Si expr1 n'est pas nul, alors NVL renvoie expr1.

Points importants à noter
(1) Les arguments expr1 et expr2 peuvent avoir n'importe quel type de données. Si leurs types de données sont différents, Oracle Database convertit implicitement l'un en l'autre. S'ils ne peuvent pas être convertis implicitement, la base de données renvoie une erreur.
Si expr1 est une donnée textuelle, Oracle Database convertit expr2 dans le type de données de expr1 avant de les comparer et renvoie VARCHAR2 dans le jeu de caractères de expr1.

Si expr1 est numérique, alors Oracle détermine quel argument a la priorité numérique la plus élevée, convertit implicitement l'autre argument en ce type de données et renvoie ce type de données.

Donc, la déclaration suivante réussirait

select nvl(num-col ,10) from select nvl(char-col ,'NA') from 
select nvl(end_date,'01-MAY-18') from

L'instruction suivante ferait une conversion implicite

select nvl(char-col ,1) from 

L'instruction suivante échouerait

select nvl(end_date,'m/a') from 
select nvl(user_id,'abc') from

Comment utiliser la fonction NVL()


Cette fonction est très utile lorsque nous ne voulons pas renvoyer de valeurs nulles ou dans le calcul numérique car null transformerait des valeurs entières en null

Allons prenez un exemple pour le comprendre
Nous avons une table sales_people qui contient les ventes réalisées par les vendeurs, le % de commission sur les ventes, le salaire des personnes. Nous voulons calculer les revenus mensuels totaux des vendeurs. Les ventes peuvent avoir des valeurs nulles

La déclaration serait

select name,(salary + sales*commission/100)  Monthy_ income from sales_people ;

Il renverra des valeurs nulles de toutes les personnes qui n'ont effectué aucune vente au cours de cette période, car le calcul aura des valeurs nulles

Cela peut être corrigé en utilisant la fonction nvl comme

select name,(salary + nvl(sales,0)*commission/100) Monthly_ income from sales_people ;

Il est donc clairement très utile pour effectuer des opérations mathématiques. La fonction NVL dans Oracle est une fonction très utile et peut être utilisée dans de nombreux endroits

Lit également
Fonctions de date Oracle SQL
Fonction NULLIF dans Oracle
Instruction de mise à jour dans Oracle
Fonction Coalesce dans Oracle
Changer le format de date dans Oracle
https://docs .oracle.com/cd/B19306_01/server.102/b14200/functions105.htm