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.
NVL (expr1 VARCHAR2, expr2 VARCHAR2) |
NVL (date1 DATE, date2 DATE) |
NVL (nombre1 NUMBER, nombre2 NUMBER) |
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.
NVL2 (expr1 VARCHAR2, expr2 VARCHAR2, expr3 VARCHAR2) |
NVL2 (date1 DATE, date2 DATE, date3 DATE) |
NVL2 (nombre1 NUMBER, nombre2 NUMBER, nombre3 NUMBER) |
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 |