Има една голяма разлика между 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