OracleでSIGN(n)とDEDECODE(VALUE, if1,then1,xx)の使い方

1.SIGN(n)
形式
n < 0 — -1
n = 0 — 0
n > 0 — 1

SQL構文
select sign(-8),sign(0),sign(8) from dual
—————————–
-1 0 1

2.DECODE(VALUE, if1,then1, if2,then2, if3,then3, DEFAULT)
SQL構文
select
level
, decode(
level
, 2
, ‘two’
, 5
, ‘five’
, 8
, ‘eight’
, 11
, ‘huhu’
, ‘student’
)
from
dual
CONNECT BY
LEVEL < 9
実行結果
———- ——-
LEVEL DECODE(LEVEL,2,’TWO’,5,’FIVE’,8,’EIGHT’,11,’HUHU’,’STUDENT’)
1 student
2 two
3 student
4 student
5 five
6 student
7 student
8 eight

3.SIGN()とDECODE()連合
LEVEL<6 –不合格
LEVEL<8 –普通
ELSE –優秀

SQL構文
SELECT
LEVEL
, DECODE(
– 1
, SIGN(LEVEL – 6)
, ‘不合格’
, SIGN(LEVEL – 8)
, ‘普通’
, ‘優秀’
)
FROM
DUAL
CONNECT BY
LEVEL < 10

実行結果
———————————————–
LEVEL DECODE(-1,SIGN(LEVEL-6),’不合格’,SIGN(LEVEL-8),’普通’,’優秀’)
1 不合格
2 不合格
3 不合格
4 不合格
5 不合格
6 普通
7 普通
8 優秀
9 優秀