1、SIGN(n)函数是一个符号函数,他的功能是返回(1或0或-1)的。
如下示例:
SQL> SELECT SIGN(-5), SIGN(0), SIGN(5) FROM dual;
SIGN(-5) SIGN(0) SIGN(5)
---------- ---------- ----------
-1 0 1
由上结果能看出:
当 n < 0 返回 -1
n = 0 返回 0
n > 0 返回 1
2、DECODE(VALUE, if1,then1, if2,then2, if3,then3, DEFAULT)
当VALUE依次和条件ifn比较,当VALUE的值等于ifn(ifn代表if1、if2...),它就返回thenn,如果VALUE的值都不等于ifn的,他就返回DEFAULT(这里的VALUE和ifn比较是短路比较的如:VALUE比较到if2并且相等他就不会在于if3进行比较了)
如下示例:
SELECT LEVEL, DECODE(LEVEL, 2,'tow',
5,'five',
8,'eight',
'default')
FROM dual CONNECT BY LEVEL<10;
LEVEL DECODE(
---------- -------
1 default
2 tow
3 default
4 default
5 five
6 default
7 default
8 eight
9 default
9 rows selected.
3、SIGN()与DECODE()结合使用示例:
当LEVEL<5输出low
当LEVEL<8输出mid
ELSE输出high
SELECT LEVEL, DECODE(-1, SIGN(LEVEL-5),'low',
SIGN(LEVEL-8),'mid',
'high')
FROM dual CONNECT BY LEVEL < 10;
LEVEL DECO
---------- ----
1 low
2 low
3 low
4 low
5 mid
6 mid
7 mid
8 high
9 high
9 rows selected.