Det finns en stor skillnad mellan DECODE
och CASE
och det har att göra med hur NULLs
jämförs. DECODE
returnerar "true" om du jämför NULL
till NULL
. CASE
ska inte. Till exempel:
DECODE(NULL, NULL, 1, 0)
returnerar '1'.
CASE NULL
WHEN NULL THEN 1
ELSE 0
END
kommer att returnera '0'. Du måste skriva det som:
CASE
WHEN NULL IS NULL THEN 1
ELSE 0
END