Sont un CAS et d'un état de DÉCODER équivalent?

Il semble que le CAS simple expression et le DÉCODAGE de la fonction sont équivalentes et que les résultats renvoyés par eux doivent être identiques. Sont-ils?

La documentation a dire au sujet de la CAS simple expression:

Le CAS simple expression retourne la première raison pour laquelle
selector_value correspond à un sélecteur. Reste expressions ne sont pas
évalué. Si aucun selector_value correspond sélecteur, le CAS de l'expression
retourne else_result, s'il existe, et NULL sinon.

De les comparer à la DÉCODER la fonction, les descriptions semblent être identiques.

DÉCODER compare expr pour chaque valeur de recherche, un par un. Si expr est égal
pour une recherche, puis la Base de données Oracle retourne le résultat correspondant. Si
aucune correspondance n'est trouvée, alors Oracle retourne par défaut. Si la valeur par défaut est omis,
puis Oracle renvoie la valeur null.

Comme le CAS recherché expression peut être équivalente à la simple, cela pourrait être interprété être le même.

Ces déclarations semblent tous retournent le même résultat, 0.

select case 1 when 2 then null else 0 end as simple_case
     , case when 1 = 2 then null else 0 end as searched_case
     , decode(1, 2, null, 0) as decode
  from dual

Faire le CAS simple expression et le DÉCODAGE de la fonction (et dans des circonstances spécifiques du CAS recherché expression) retourne toujours le même résultat?

OriginalL'auteur Ben | 2012-12-04