case when 的语法有如下3种:1CASE WHEN [expr] THEN [result1]…ELSE [default] END 2CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END 3CASE [col_name] WHEN [expr1] THEN [result1]…ELSE [default] END
case when 的语法有如下3种:
1.第一种语法最常用,可比较等于、范围的条件。遇到第一个满足条件的即返回,不再往下比较,如果没有满足的条件则返回else里的结果,如果没有else则返回NULL。
2.第二种语法不常用,只能比较等于的条件。when后面如果是值,则是表示等于的意思,"="可以不用写,遇到满足条件的才返回,如果没有满足的条件则返回else里的结果,如果没有else则返回NULL。
3.第三种语法实际上是错的。when后面如果是表达式,不管when的条件是否满足,都是返回else里的结果,如果没有else则返回NULL。
4.when后面要么是表达式,要么是值,不然报错。如果是“=‘101’“或者“>=1000” 这样既不是表达式,也不是值,则执行时报错。
表结构:
现有记录:
我们想根据salary区分类别:
1. 使用语法1
CASE WHEN [expr] THEN [result1]…ELSE [default] END
如下语句的结果符合期望,when后面是表达式:
如下语句的结果则不符合期望,顺序弄反了,是返回第一个符合条件的结果:
2. 使用语法2
CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END
如下语句的结果符合期望,when后面是值:
如下语句则报错,when后面既不是表达式,也不是值:
3. 使用语法3
CASE [col_name] WHEN [expr1] THEN [result1]…ELSE [default] END
如下语句不报错,但是结果不符合期望,when后面是表达式,不管when的条件是否满足,都是返回else里的结果;如果把else语句注释掉了,都是返回NULL:
以上是本人亲测,之前使用时有些迷惑第二种语法,如今终于明白了。下期分享case when在分组统计中的实际用法。
「欢迎关注,每天更新职场实用技能」