¿Son una declaración CASE y un equivalente de DECODE?

Parece que la expresión CASE simple y la función DECODE son equivalentes y que los resultados devueltos deberían ser idénticos. ¿Son ellos?

La documentación tiene lo siguiente que decir sobre elexpresión CASE simple:

La expresión CASE simple devuelve el primer resultado para el cual selector_value coincide con el selector. Las expresiones restantes no son evaluadas. Si ningún selector_value coincide con el selector, la expresión CASE devuelve else_result si existe y NULL de lo contrario.

Comparando esto con elFunción decodificar, las descripciones parecen ser idénticas.

DECODE compara expr con cada valor de búsqueda uno por uno. Si expr es igual a una búsqueda, la base de datos Oracle devuelve el resultado correspondiente. Si no se encuentra ninguna coincidencia, Oracle devuelve el valor predeterminado. Si se omite el valor predeterminado, Oracle devuelve nulo.

Como elexpresión CASE buscada puede ser equivalente a lo simple, esto también podría interpretarse como lo mismo.

Estas tres afirmaciones parecen devolver el mismo resultado, 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

¿La expresión CASE simple y la función DECODE (y, en circunstancias específicas, la expresión CASE buscada) siempre devuelven el mismo resultado?

Respuestas a la pregunta(3)

Su respuesta a la pregunta