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