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;

暂无评论

发表评论