Има една голяма разлика между DECODE и CASE и това е свързано с това как NULLs се сравняват. DECODE ще върне "true", ако сравните NULLs до NULLs . CASE няма да. Например:
DECODE(NULL, NULL, 1, 0)
ще върне '1'.
CASE NULL
WHEN NULL THEN 1
ELSE 0
END
ще върне '0'. Трябва да го напишете като:
CASE
WHEN NULL IS NULL THEN 1
ELSE 0
END