Decode 函数
Decode函数的功能有点像程式语言的if-then-else句子,他会能够根据资料的不同值,传回不同的数据,语法如下:
DECODE(COLUMN_NAME
,VALUE1, SUBSTITUTE1
,VALUE2, SUBSTITUTE2
, ...
,DEFAULT
)
如果COLUMN_NAME 的 值 是 VALUE1 ,就传回 SUBSTITUTE1,VALUE2,就传回 SUBSTITUTE2 ,以此类推,如果以上的纸都不是,就返回DEFAULT 。
其实DECODE 也可以做到NVL 的功能, 例如:NVL(COMM, 0) 可以写成:
DECODE(COMM, NULL, 0, COMM)
假设你想列出每个雇员部门的名称,除了可以把 EMP 连到DEPT外,还可以用DECODE来做。
SQL> SELECT ENAME
2 ,DECODE(DEPTNO
3 ,10 ,'Accounting'
4 ,20 ,'Research'
5 ,30 ,'Sales'
6 ,40 ,'Opeartions'
7 ,'UNKNOWN'
8 ) DEPARTMENT
9 FROM EMP
10 ;
ENAME DEPARTMENT
---------- -------------
SMITH Research
ALLEN Sales
WARD Sales
JONES Research
MARTIN Sales
BLAKE Sales
CLARK Accounting
SCOTT Research
KING Accounting
TURNER Sales
ADAMS Research
JAMES Sales
FORD Research
MILLER Accounting
14 rows selected.
Decode函数的功能有点像程式语言的if-then-else句子,他会能够根据资料的不同值,传回不同的数据,语法如下:
DECODE(COLUMN_NAME
,VALUE1, SUBSTITUTE1
,VALUE2, SUBSTITUTE2
, ...
,DEFAULT
)
如果COLUMN_NAME 的 值 是 VALUE1 ,就传回 SUBSTITUTE1,VALUE2,就传回 SUBSTITUTE2 ,以此类推,如果以上的纸都不是,就返回DEFAULT 。
其实DECODE 也可以做到NVL 的功能, 例如:NVL(COMM, 0) 可以写成:
DECODE(COMM, NULL, 0, COMM)
假设你想列出每个雇员部门的名称,除了可以把 EMP 连到DEPT外,还可以用DECODE来做。
SQL> SELECT ENAME
2 ,DECODE(DEPTNO
3 ,10 ,'Accounting'
4 ,20 ,'Research'
5 ,30 ,'Sales'
6 ,40 ,'Opeartions'
7 ,'UNKNOWN'
8 ) DEPARTMENT
9 FROM EMP
10 ;
ENAME DEPARTMENT
---------- -------------
SMITH Research
ALLEN Sales
WARD Sales
JONES Research
MARTIN Sales
BLAKE Sales
CLARK Accounting
SCOTT Research
KING Accounting
TURNER Sales
ADAMS Research
JAMES Sales
FORD Research
MILLER Accounting
14 rows selected.