有没有人知道单个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
提前感谢您的见解!
答案 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:
嵌套开关
(开关内的开关)是人类思维解开的最困难的嵌套类型。
这是一个意见,当然,但我不能争辩。 (当然,case
和switch
是同一逻辑结构的不同语法。)你的第二个表述只是不必要的讨厌,所以除非你有充分的理由,否则请避免使用它。