COALESCE |
Fusionnez |
---|---|
Oracle Database SQL |
Syntaxe
coalesce(Expression1[,Expression2[,...][,ExpressionN]]) |
Paramètres
Nom | Description |
---|---|
Expression1[,Expression2[,...][,ExpressionN]] | Ces paramètres permettent d'indiquer une liste d'expression à évaluer. |
Description
Cette fonction permet de retourner la première valeur non-nulle d'une liste d'expression.
Algorithme
MODULE COALESCE(val1, val2, ..., valN) BOUCLE POUR CHAQUE valeur dans (val1, val2, ..., valN) FAIRE SI la valeur n'est pas NULL ALORS RETOURNE cette valeur FIN SI FIN BOUCLE POUR RETOURNE NULL (si toutes les valeurs sont NULL) |
Remarques
- Substitution des valeurs NULL : La fonction COALESCE permet de remplacer les valeurs NULL par la première valeur non nulle dans une liste donnée. Elle simplifie ainsi les requêtes en évitant des structures conditionnelles complexes comme CASE.
- Évaluation séquentielle des paramètres : Les paramètres de COALESCE sont évalués dans l'ordre. Dès qu'une valeur non nulle est trouvée, cette valeur est renvoyée et les paramètres restants ne sont pas évalués, optimisant ainsi les performances.
- Différence avec NVL : Contrairement à NVL, ne prenant que deux paramètres, COALESCE peut en accepter un nombre illimité, ce qui le rend plus flexible pour des scénarios où plusieurs alternatives sont possibles.
- Typage des données : Tous les paramètres passés à COALESCE doivent être du même type ou implicitement convertibles au même type. Sinon, une erreur de type est générée au moment de la compilation.
- Utilisation avec des colonnes multiples : Dans des cas où plusieurs colonnes peuvent contenir des données, COALESCE est utile pour renvoyer la première valeur non nulle parmi ces colonnes. Cela est particulièrement courant dans les applications de reporting.
- Facilite les opérations d'agrégation : Lorsqu'elle est combinée avec des fonctions d'agrégation comme SUM ou COUNT, COALESCE peut éviter que des valeurs nulles affectent les résultats, en les remplaçant par des valeurs par défaut.
- Performance par rapport à CASE : Bien que fonctionnellement similaire à une expression CASE, COALESCE est souvent plus lisible et parfois légèrement plus performant, car elle est optimisée pour ce cas d'usage spécifique.
- Compatibilité avec d'autres SGBD : La fonction COALESCE est standard SQL et est donc portable entre différents systèmes de gestion de bases de données, contrairement à certaines fonctions spécifiques comme NVL (propre à Oracle). Cela favorise la migration et l'interopérabilité.
Exemple
Voici un exemple montrant divers utilisation de cette fonction :
- SELECT 'coalesce(1,NULL,2,3,4,5) = ' As Text,coalesce(1,NULL,2,3,4,5) AS Result FROM DUAL UNION
- SELECT 'coalesce(NULL,2,3,4,5,1) = ' As Text,coalesce(NULL,2,3,4,5,1) AS Result FROM DUAL UNION
- SELECT 'coalesce(NULL,NULL,3,4,5,1,2) = ' As Text,coalesce(NULL,NULL,3,4,5,1,2) AS Result FROM DUAL UNION
- SELECT 'coalesce(NULL,4,5,1,2,3,NULL,NULL) = ' As Text,coalesce(NULL,4,5,1,2,3,NULL,NULL) AS Result FROM DUAL;
on obtiendra le résultat suivant :
TEXT | RESULT |
coalesce(1,NULL,2,3,4,5) = | 1 |
coalesce(NULL,2,3,4,5,1) = | 2 |
coalesce(NULL,NULL,3,4,5,1,2) = | 3 |
coalesce(NULL,4,5,1,2,3,NULL,NULL) = | 4 |
Voir également
Article - Les géants de l'informatique - Oracle
Dernière mise à jour : Lundi, le 11 mai 2015