Case When 用法 以及常见错误
case when 有两种用法结构
-
第一种 标准的(建议用第一种 标准并且不容易出错 可判断任意条件)
case when 判断的字段名条件1 then 结果1 when 判断的字段名 条件2 then 结果2 else(可写可不写) 结果3 end '命名的名字'
例如
select *, -- 查询所有数据 case when sal>1000 and sal <1500 then '底薪' -- 判断条件 when sal>1500 and sal<2000 then '高薪' -- 判断条件 end ‘end’ -- else可省略 如果不需要 from emp;
- 第二种的 case when (有限制) 一般判断条件用于等或者不等的 不能用于大于或者小于
case 判断字段名 when '符合条件1' then '符合条件2' -- when中默认用case后面的字段名进行匹配
when '符合条件2' then '符合条件3'
else(可写可不写) 结果3
end '命名的名字'
例子
select *,
case deptno when 10 then '结果1'
when 20 then '结果2'
when 30 then '结果3'
end ‘命名’
from emp;
结果
后面就是我用case when语句的 碰到的错误
用第二种方法时候 when后面不能再加判断的字段名 否则会全部失效 比如
select *,case deptno -- case后面已经有需要判断的字段名
when deptno=10 then '结果1' -- when 后面又加了判断名 会导致所有判断条件全部失效
when deptno= 20 then '结果2'
when deptno=30 then '结果3'
end ‘命名’
from emp;
结果
所以写的时候要记得用哪个方式 不要重复加了需要判断的字段名