Oracle
 sql >> Database >  >> RDS >> Oracle

CASE vs. DECODIFICA

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