
La fonction SQL ORACLE NVL remplace une valeur nulle avec une valeur non nulle. NVL prend deux paramètres:
📌 À lire aussi : DECODE Oracle : syntaxe et exemples · COALESCE Oracle
NVL(arg1, arg2)
La fonction NVL retourne arg2 si arg1 est nulle, sinon la fonction retourne arg1. Les paramètres utilisés par NVL peuvent être de tout type de données.
Exemple:
Nous voulons afficher le revenu total des salaries de la table EMPLOYEES (schéma HR), qui ont le prénom qui commence par D:
SELECT FIRST_NAME PRENOM, LAST_NAME NOM, SALARY SALAIRE, COMMISSION_PCT PRIME, SALARY + (SALARY * COMMISSION_PCT) REVENU FROM EMPLOYEES WHERE FIRST_NAME LIKE 'D%'; PRENOM NOM SALAIRE PRIME REVENU ----------- ---------- --------- -------- -------- Donald OConnell 2600 Douglas Grant 2600 David Austin 4800 Diana Lorentz 4200 Daniel Faviet 9000 Den Raphaely 11000 David Bernstein 9500 0,25 11875 Danielle Greene 9500 0,15 10925 David Lee 6800 0,1 7480
Vous pouvez voir que le REVENU est nulLe pour ceux qui n’ont pas de prime. Pour afficher les revenus de tout le monde, nous allons utiliser la fonction NVL sur la colonne COMMISSION_PCT pour la mettre à O si elle est nulle. Le résultat de la requête avec NVL est :
SELECT FIRST_NAME PRENOM, LAST_NAME NOM, SALARY SALAIRE, COMMISSION_PCT PRIME, SALARY + (SALARY * NVL(COMMISSION_PCT, 0)) REVENU FROM EMPLOYEES WHERE FIRST_NAME LIKE 'D%'; PRENOM NOM SALAIRE PRIME REVENU ----------- ---------- --------- -------- -------- Donald OConnell 2600 2600 Douglas Grant 2600 2600 David Austin 4800 4800 Diana Lorentz 4200 4200 Daniel Faviet 9000 9000 Den Raphaely 11000 11000 David Bernstein 9500 0,25 11875 Danielle Greene 9500 0,15 10925 David Lee 6800 0,1 7480
Questions fréquentes
À quoi sert la fonction NVL en Oracle ?
NVL remplace une valeur NULL par une valeur de substitution : NVL(commission, 0) renvoie 0 si la commission est NULL, sinon la commission. C’est l’équivalent Oracle de IFNULL (MySQL) ou ISNULL (SQL Server).
Quelle est la différence entre NVL et COALESCE ?
NVL accepte exactement 2 arguments et les évalue tous les deux. COALESCE accepte N arguments, s’arrête au premier non NULL (évaluation paresseuse) et fait partie de la norme SQL : il est donc portable et souvent plus performant.
Quelle est la différence entre NVL et NVL2 ?
NVL(a, b) renvoie b si a est NULL. NVL2(a, b, c) renvoie b si a n’est PAS NULL, et c si a est NULL — utile pour appliquer deux traitements différents selon la nullité.

A noter que cette fonction ne permet pas, si la requête ne retourne aucune ligne, de générer une ligne par défaut : elle ne joue que sur les colonnes nulles de lignes existantes.
Oui tout à fait, cette fonction ne retourne un résultat que si la requête elle même retourne une ou plusieurs lignes.
Merci pour la précision.