CASE与DECODE

mch*_*cha 35 sql oracle

参照以前的问题,我想知道如果它总是能够替代DECODECASE,哪一个是获得更好的性能?

Che*_*vel 55

之间存在一个很大的区别DECODE,并CASE和它与如何做NULLs比较. DECODE如果你比较NULL,将返回"true" NULL. CASE将不会.例如:

DECODE(NULL, NULL, 1, 0)
Run Code Online (Sandbox Code Playgroud)

将返回'1'.

CASE NULL
    WHEN NULL THEN 1
    ELSE 0
END
Run Code Online (Sandbox Code Playgroud)

将返回'0'.你必须把它写成:

CASE
    WHEN NULL IS NULL THEN 1
    ELSE 0
END
Run Code Online (Sandbox Code Playgroud)


And*_*son 47

与Oracle一样...... AskTom ......

从这篇文章 ......

解码有点模糊 - CASE非常清楚.在CASE中很容易做到易于解码的事情,在CASE中很容易做到解码困难或几乎无法做到的事情.逻辑明智的CASE赢得了胜利.

从性能的角度看,它们大致相同,上面的文章再次提到了一些速度差异,但没有对特定陈述进行基准测试很难说.

  • 8.1.6很老,我认为8.1.6可以追溯到1999年。 (2认同)