在编程语言中常用的条件表达式就是if了,在oracle中也有类似打条件表达式 case
比如,我们要实现一个个员工涨工资的SQL,总裁(PRESIDENT)涨1000,经理(MANAGER)涨800,其他人涨400. 然后将将涨前,涨后的薪水列出
这件事在编程语言里和容易做到思路如下:
if 是总裁(‘PRESIDENT’) then +1000
else if 是经理(‘MANAGER’) then +800
else +400
但是sql里面并没有if语句,但是oracle提供了case来代替if
SELECT ename, job, sal 原工资, CASE job WHEN 'PRESIDENT' THEN sal+100 WHEN 'MANAGER' THEN sal+800 ELSE sal+400 END 涨后工资 from emp;
语法注意:when then 与下一个when then以及end之间没有“,”分割符。
以上功能还可以使用decode函数来实现, decode(参1, 条件, 值, 条件, 值, …, 条件, 值, 尾参)
除第一个和最后一个参数之外,中间的参数都是成对呈现的 代码如下:
SELECT ename, job, sal 原工资, DECODE(job, 'PRESIDENT', sal+1000, 'MANAGER', sal+800, sal+400) AS 涨后工资 FROM emp;