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 Accounting14 rows selected.
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 Accounting14 rows selected.
v_name:=decode(a.user_name,'A','alen','C','Cary','M','Mary','Jony')--access:
if a.user_name='A' then
v_name='alen'
else if a.uer_name='C' then
v_name='Cary'
else if a.user_name='M' then
v_name='Mary'
else
v_name='Jony'
end if
那我的程序好多地方都得改。
我原来的是在ORACLE下的。
因用户说用ORACLE太麻烦,最好改为 access.
没办法。
你建议客户使用SQL Server不就得了么?
反正是D的,SQL Server比Access更易使用,更人性化!