Qu'est-ce que la fonction de coalescence ?
Fonction de coalescence est une fonction utile dans oracle et elle est très utile lorsque nous voulons renvoyer les premières valeurs non nulles de la liste. Ce tutoriel SQL fournit des explications, des exemples pour la fonction Coalesce dans Oracle et la différence entre Coalesce et NVL
expr1 :Ceci est retourné si ce n'est pas nul
expr2 :Ceci est retourné si ce n'est pas nul et que la première expression est nulle
exprn :Ceci est retourné si l'expression précédente est nulle
Ainsi, Coalesce dans oracle renverra la première expression si elle n'est pas nulle, sinon il fusionnera le reste de l'expression
Point important
(1) La base de données Oracle utilise l'évaluation des courts-circuits. La base de données évalue chaque valeur expr et détermine si elle est NULL, plutôt que d'évaluer toutes les valeurs expr avant de déterminer si l'une d'entre elles est NULL.
(2) COALESCE dans oracle est équivalent à la fonction Case
Donc COALESCE (expr1, expr2) est équivalent à :
CAS QUAND expr1 N'EST PAS NULL ALORS expr1ELSE expr2 FIN
De même,
COALESCE (expr1, expr2, …, exprn), pour n>=3 est équivalent à :
CASE QUAND expr1 N'EST PAS NULL ALORS expr1WHEN expr2 N'EST PAS NULL ALORS expr2WHEN expr3 N'EST PAS NULL ALORS expr3WHEN exprn N'EST PAS NULL ALORS exprnEND
Ou cela peut être écrit comme
CASE WHEN expr1 IS NOT NULL THEN expr1ELSE COALESCE (expr2, ..., exprn) END
(3) Habituellement, toutes les expressions de l'instruction coalesce doivent être du même type de données, sinon ORA-00932 sera renvoyé.
SQL> select coalesce('a',1,2) from dual;select coalesce('a',1,2) from dual*ERROR at line 1:ORA-00932 :types de données incohérents :CHAR attendu obtenu NUMBERSi toutes les occurrences de l'expression sont de type de données numérique ou de tout type de données non numérique pouvant être implicitement converti en type de données numérique, Oracle Database détermine l'argument avec la priorité numérique la plus élevée, convertit implicitement les arguments restants en ce type de données et renvoie ce type de données.
Comment utiliser la fonction Coalesce
SQL> select coalesce(1,2,3) from dual;COALESCE(1,2,3)---------------1SQL> SELECT COALESCE(null, null, null , 'X', 'Y');COALESCE(...)---------------XExemples de coalescence
Supposons que nous ayons une table oracle des employés composée de address1, address2 et address3 et nous pouvons vouloir imprimer la première adresse non nulle des employés de la table par ordre de priorité address1> address2> address3
sélectionnez emp_name, COALESCE(address1,address2,address3) de l'employé ;Différence entre la fonction Coalesce et NVL
- Coalesce est une généralisation de la fonction NVL. La fonction NVL peut être utilisée pour deux expressions, tandis que coalesce peut être utilisée pour plusieurs
- Dans le cas de deux expressions, elles sont identiques mais l'implémentation est différente.Oracle évalue à la fois l'expression en cas de NVL alors qu'il évalue simplement la première expression en cas de fusion.Donc, si la deuxième expression contient des erreurs,NVL lancera une erreur tandis que la fusion ne le sera pas.
- Coalesce est la norme ANSI tandis que NVL est spécifique à Oracle
Articles connexes
Tutoriel Oracle Sql
Fonction NULLIF dans Oracle
Fonction NVL dans Oracle
Fonction Oracle LISTAGG
https://docs.oracle.com/cd/B28359_01/server.111/b28286/ fonctions023.htm#SQLRF00617