Jest jedna duża różnica między DECODE i CASE i ma to związek z tym, jak NULLs są porównywane. DECODE zwróci "true" jeśli porównasz NULLs na NULLs . CASE nie będzie. Na przykład:
DECODE(NULL, NULL, 1, 0)
zwróci '1'.
CASE NULL
WHEN NULL THEN 1
ELSE 0
END
zwróci '0'. Musiałbyś napisać to jako:
CASE
WHEN NULL IS NULL THEN 1
ELSE 0
END