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;

结果

所以写的时候要记得用哪个方式 不要重复加了需要判断的字段名