Oracle中的decode函数和sign函数

来源:互联网 发布:恶棍天使知乎 编辑:程序博客网 时间:2024/06/10 10:31

sign函数的语法取数字n的符号,大于0返回1,小于0返回-1,等于0返回0。

SELECT sign(100),sign(-100),sign(0) FROM dual;SIGN(100),SIGN(-100),SIGN(0)1  -1  0

DECODE()函数类似于if...else if...else语句

SELECT DECODE(1,1,'内容是1',2,'内容是2','其他') FROM DUAL;DECODE(1,1,'内容是1',2,'内容是2','其他')内容是1

假设我们想给智星职员加工资,其标准是:工资在8000元以下的加20%;工资在8000元或以上的加15%,通常的做法是,先选出记录中的工资字段值? 

select salary into var-salary from employee,然后对变量var-salary用if-then-else或choose case之类的流控制语句进行判断。如果用DECODE函数,那么我们就可以把这些流控制语句省略,通过SQL语句就可以直接完成。如下:

select decode(sign(salary - 8000),>=0,salary*1.15,<0,salary*1.2,salary) from employee 

是不是很简洁?

原创粉丝点击