MySQL案例陈述

时间:2011-10-27 16:16:34

标签: mysql sql

有没有人知道单个CASE语句与多个WHEN对多个CASE语句的显着区别?

例如

SELECT
  blah
  , CASE WHEN x THEN 'abc'
      WHEN y THEN 'deF'
      WHEN z THEN 'gHi'
    ELSE END

  , CASE WHEN x THEN 'abc' ELSE
      CASE WHEN y THEN 'deF' ELSE
        CASE WHEN z THEN 'gHi' ELSE
        END
      END
    END

提前感谢您的见解!

2 个答案:

答案 0 :(得分:4)

不完全确定您想要听到的内容但是......存在多个WHEN子句,因此您不需要嵌套CASE语句。

修改

澄清事情:两个构造都可以做同样的事情,但嵌套的CASE使代码更加混乱和不可读。一个类似的例子:

SELECT
    CONCAT_WS(' ', 'A', CONCAT_WS(' ', 'B', CONCAT_WS(' ', 'C'))) AS nested,
    CONCAT_WS(' ', 'A', 'B', 'C') AS multiple

答案 1 :(得分:2)

来自How to Write Unmaintainable Code

  

嵌套开关
  (开关内的开关)是人类思维解开的最困难的嵌套类型。

这是一个意见,当然,但我不能争辩。 (当然,caseswitch是同一逻辑结构的不同语法。)你的第二个表述只是不必要的讨厌,所以除非你有充分的理由,否则请避免使用它。