Oracle SQL中的条件表达式

在编程语言中常用的条件表达式就是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;

No comments yet