Vendredi 15 juillet 2011 5 15 /07 /Juil /2011 11:25

 

Fonctions SQL NVL et NVL2.

Comment évaluer et gérer des valeurs NULL en SQL dans Oracle.

La fonction NVL retourne expr2 si expr1 est NULL sinon retourne expr1.
NVL convertit expr1 susceptible d’être null en une valeur réelle expr2.

Les types de données doivent être les même pour les deux paramètres.
Les fonctions NVL et NVL2 sont très pratiques pour contourner le problème des valeurs NULL.

Syntaxe fonction NVL.

 
 
NVL (expr1 VARCHAR2, expr2 VARCHAR2)
 
 
NVL (date1 DATE, date2 DATE)
 
 
NVL (nombre1 NUMBER, nombre2 NUMBER)

 

Pourquoi utiliser NVL dans SQL et PLSQL.

 
 
C:\>SET ORACLE_SID=DBTEST

C:\>SQLPLUS /NOLOG

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Jul 15 12:08:34 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> connect scott/tiger
Connected.
SQL>
SQL> SELECT  ename,
  2          job,
  3          sal + comm
  4    FROM  emp
  5   WHERE  deptno = 30;

ENAME      JOB         SAL+COMM
---------- --------- ----------
ALLEN      SALESMAN        1900
WARD       SALESMAN        1750
MARTIN     SALESMAN        2650
BLAKE      MANAGER
TURNER     SALESMAN        2260
JAMES      CLERK

6 rows selected.

SQL> SELECT  ename,
  2          job,
  3          sal + NVL(comm,0)
  4    FROM  emp
  5   WHERE  deptno = 30;

ENAME      JOB       SAL+NVL(COMM,0)
---------- --------- ---------------
ALLEN      SALESMAN             1900
WARD       SALESMAN             1750
MARTIN     SALESMAN             2650
BLAKE      MANAGER              2850
TURNER     SALESMAN             2260
JAMES      CLERK                 950

6 rows selected.

SQL>

 

La fonction NVL2 est une variante de la fonction NVL, elle retourne expr3 si expr1 est NULL sinon retourne expr2.
NVL2 convertit expr1 susceptible d’être null en une valeur réelle expr3 ou expr2.

Les types de données doivent être les même pour les trois paramètres.

Syntaxe fonction NVL2.

 
 
NVL2 (expr1 VARCHAR2, expr2 VARCHAR2, expr3 VARCHAR2)
 
 
NVL2 (date1 DATE, date2 DATE, date3 DATE)
 
 
NVL2 (nombre1 NUMBER, nombre2 NUMBER, nombre3 NUMBER)

 

Pourquoi utiliser NVL2 dans SQL et PLSQL.

 
 
C:\>SET ORACLE_SID=DBTEST

C:\>SQLPLUS /NOLOG

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Jul 15 12:08:34 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> connect scott/tiger
Connected.
SQL>
SQL> SELECT  ename,
  2          job,
  3          sal + comm
  4    FROM  emp
  5   WHERE  deptno = 30;

ENAME      JOB         SAL+COMM
---------- --------- ----------
ALLEN      SALESMAN        1900
WARD       SALESMAN        1750
MARTIN     SALESMAN        2650
BLAKE      MANAGER
TURNER     SALESMAN        2260
JAMES      CLERK

6 rows selected.

SQL> SELECT  ename,
  2          job,
  3          NVL2(comm, sal + comm, sal)
  4    FROM  emp
  5   WHERE  deptno = 30;

ENAME      JOB       NVL2(COMM,SAL+COMM,SAL)
---------- --------- -----------------------
ALLEN      SALESMAN                     1900
WARD       SALESMAN                     1750
MARTIN     SALESMAN                     2650
BLAKE      MANAGER                      2850
TURNER     SALESMAN                     2260
JAMES      CLERK                        950

6 rows selected.

SQL>

 

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Fonction COALESCE
• Fonction DECODE
• Fonctions Oracle
Par Daniel Roesch - Publié dans : FUNCTIONS - SQL
Ecrire un commentaire - Voir les 0 commentaires
Retour à l'accueil

Rechercher Articles Oracle SQL sur ce Site.

Loading

À lire aussi…

Download PDF Oracle

Rechercher sur le site

Oracle 10G - DBA -

Syndication

  • Flux RSS des articles
Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus - Articles les plus commentés