Oracle
 sql >> Datenbank >  >> RDS >> Oracle

CASE vs. DECODE

Es gibt einen großen Unterschied zwischen DECODE und CASE und es hat damit zu tun, wie NULLs verglichen werden. DECODE gibt "true" zurück, wenn Sie NULL vergleichen auf NULL . CASE wird nicht. Zum Beispiel:

DECODE(NULL, NULL, 1, 0)

gibt '1' zurück.

CASE NULL
    WHEN NULL THEN 1
    ELSE 0
END

gibt '0' zurück. Sie müssten es schreiben als:

CASE
    WHEN NULL IS NULL THEN 1
    ELSE 0
END