例子:老板打算给员工涨工资, 要求:
总裁(PRESIDENT)涨1000,经理(MANAGER)涨800,其他人涨400. 请将涨前,涨后的薪水列出。
select ename, job, sal 涨前薪水, 涨后薪水 from emp 涨后的薪水是根据job来判断的
思路: if 是总裁(‘PRESIDENT’) then +1000
else if 是经理(‘MANAGER’) then +800
else +400
但是在SQL中无法实现if else 逻辑。当有这种需求的时候,可以使用case 或者 decode
case: 是一个表达式,其语法为:
1 | CASE expr WHEN comparison_expr1 THEN return_expr1 |
案例: 老板打算给涨工资,总裁1000,经理800,普通员工400,将涨前、涨后薪水列出
介绍case when 的用法和decode的用法:
使用case when
1 | select empno, |
使用decode函数:
1 | select empno, |
代码优化
