C'è una grande differenza tra DECODE e CASE e ha a che fare con il modo in cui NULLs vengono confrontati. DECODE restituirà "true" se confronti NULL a NULL . CASE non lo farà. Ad esempio:
DECODE(NULL, NULL, 1, 0)
restituirà '1'.
CASE NULL
WHEN NULL THEN 1
ELSE 0
END
restituirà '0'. Dovresti scriverlo come:
CASE
WHEN NULL IS NULL THEN 1
ELSE 0
END