Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment utiliser la fonction Coalesce dans Oracle

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 NUMBER 

Si 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(...)---------------X

Exemples 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

  1. 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
  2. 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.
  3. 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