Há uma grande diferença entre
DECODE
e CASE
e tem a ver com como NULLs
são comparados. DECODE
retornará "true" se você comparar NULL
para NULL
. CASE
não vou. Por exemplo:DECODE(NULL, NULL, 1, 0)
retornará '1'.
CASE NULL
WHEN NULL THEN 1
ELSE 0
END
retornará '0'. Você teria que escrevê-lo como:
CASE
WHEN NULL IS NULL THEN 1
ELSE 0
END