NVL2 |
Pas de valeur ou |
|---|---|
| Oracle Database SQL | Oracle 8i ou supérieure |
Syntaxe
| NVL2(string1,value_if_NOT_null,value_if_null) |
Paramètres
| Nom | Description |
|---|---|
| string1 | Ce paramètre permet d'indiquer la chaîne de caractères à tester pour une valeur nulle. |
| value_if_not_null | Ce paramètre permet d'indiquer la valeur retourné si le paramètre string1 n'est pas nulle. |
| value_if_null | Ce paramètre permet d'indiquer la valeur retourné si le paramètre string1 est nulle. |
Description
Cette fonction permet de remplacer une valeur par celle spécifié lorsqu'elle est nulle ou pas.
Remarques
- La fonction NVL2 étend la logique de NVL en gérant deux cas : alors que NVL(expr1, expr2) ne traite que les cas où expr1 est NULL, NVL2 permet de spécifier une valeur pour les deux scénarios - NULL et non-NULL. Cela apporte une flexibilité précieuse dans les expressions conditionnelles sans recourir à des constructions CASE plus longues.
- NVL2 est particulièrement utile dans les calculs personnalisés, comme lorsqu'on souhaite appliquer un calcul si une colonne contient une valeur, ou un autre si elle est vide. Cela évite les constructions SQL plus verbeuses, tout en restant lisible.
- La fonction NVL2 est souvent utilisée pour simplifier les requêtes de transformation de données, par exemple en assignant un libellé ou une valeur conditionnelle à une colonne selon qu'elle contient une information ou non. Cela s'avère fréquent dans les rapports décisionnels.
- Elle peut servir de remplacement aux instructions CASE simples, en proposant une syntaxe plus compacte. Par exemple, NVL2(col, 'Présent', 'Absent') est plus clair et plus court que CASE WHEN col IS NOT NULL THEN 'Présent' ELSE 'Absent' END.
- NVL2 fonctionne avec différents types de données, tant que value_if_not_null et value_if_null sont du même type ou peuvent être convertis implicitement. Cela inclut les types numériques, textuels et même les dates, à condition que le typage soit cohérent.
- En contexte analytique ou de reporting, NVL2 est utile pour mettre en évidence la présence ou l'absence de données dans certaines colonnes sensibles. Elle permet par exemple de signaler des anomalies, des champs incomplets ou des données manquantes.
- Attention aux conversions de type implicites, car si value_if_not_null et value_if_null n'ont pas un type compatible, Oracle lèvera une erreur. Il peut être nécessaire d'utiliser des fonctions explicites comme TO_CHAR() ou TO_NUMBER() pour assurer la compatibilité.
- NVL2 est une fonction scalaire, elle s'applique ligne par ligne dans les résultats d'une requête SQL. Cela signifie qu'elle peut être utilisée dans des clauses SELECT, WHERE, GROUP BY (via expressions) ou même dans des fonctions analytiques complexes.
- Dans des systèmes de saisie partielle ou de qualité de données variable, NVL2 peut être utilisée pour générer des indicateurs de complétude. Par exemple, une colonne affichant "OK" si une donnée est présente et "Manquant" sinon.
- NVL2 améliore la lisibilité du code SQL, en encapsulant une logique conditionnelle dans une forme concise et intuitive. Cela permet de réduire la complexité des requêtes dans les vues ou les scripts PL/SQL.
- Son utilisation est compatible avec les sous-requêtes ou expressions imbriquées, ce qui permet d'évaluer dynamiquement si un résultat est NULL ou non, et d'adapter la logique sans écrire une requête conditionnelle complète.
- Son nom signifie littéralement "Null Value Logic - version 2", reflétant sa capacité à gérer deux cas de manière plus expressive que NVL. Elle est bien intégrée dans la logique des expressions conditionnelles d'Oracle et s'avère précieuse pour tout développeur SQL régulier.
Voir également
Article - Les géants de l'informatique - Oracle
Dernière mise à jour : Lundi, le 11 mai 2015