Uma declaração CASE e um DECODE equivalente?

Parece que a simples expressão CASE e a função DECODE são equivalentes e que os resultados retornados por eles devem ser idênticos. São eles?

A documentação tem o seguinte a dizer sobre osimples expressão CASE:

A expressão CASE simples retorna o primeiro resultado para o qual selector_value corresponde ao seletor. Expressões restantes não são avaliadas. Se nenhum selector_value corresponder ao seletor, a expressão CASE retornará else_result, se existir e NULL, caso contrário.

Comparando isso com oFunção DECODE, as descrições parecem ser idênticas.

DECODE compara expr a cada valor de pesquisa um por um. Se expr for igual a uma pesquisa, o Oracle Database retornará o resultado correspondente. Se nenhuma correspondência for encontrada, o Oracle retornará o padrão. Se o padrão for omitido, o Oracle retornará nulo.

Enquanto orevista expressão CASE pode ser equivalente ao simples, isso pode ser interpretado como o mesmo.

Todas essas três instruções parecem retornar o mesmo 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

A expressão simples CASE e a função DECODE (e em circunstâncias específicas a expressão CASE pesquisada) sempre retornam o mesmo resultado?

questionAnswers(3)

yourAnswerToTheQuestion