Oracle中的decode函式和sign函式
阿新 • • 發佈:2019-02-16
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
是不是很簡潔?