W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
DECODE
函數(shù)依次用參數(shù) search
與 condition
做比較,直至 condition
與 search
的值相等,則返回對應(yīng) search
后跟隨的參數(shù) result
的值。如果沒有 search
與 condition
相等,則返回參數(shù) default
的值。
DECODE (condition, search 1, result 1, search 2, result 2 ... search n, result n, default)
DECODE
函數(shù)的含義可以用 IF...ELSE IF...END
語句進(jìn)行解釋:
IF condition = search 1 THEN
RETURN(result 1)
ELSE IF condition = search 2 THEN
RETURN(result 2)
......
ELSE IF condition = search n THEN
RETURN(result n)
ELSE
RETURN(default)
END IF
參數(shù) |
說明 |
---|---|
condition、search 1...search n、result 1...result n、default |
數(shù)值型( |
search 1
~ search n
不能為條件表達(dá)式,這種情況只能用 CASE WHEN THEN END
語句解決:
WHEN CASE condition = search 1 THEN
RETURN(result 1)
ELSE CASE condition = search 2 THEN
RETURN(result 2)
......
ELSE CASE condition = search n THEN
RETURN(result n)
ELSE
RETURN(default)
END
示例 1: 使用 DECODE
比較數(shù)值的大小。
以下語句使用 DECODE
函數(shù)來返回數(shù)值 10 與 20 當(dāng)中較小的那個數(shù)。SIGN()
函數(shù)用來計算兩個值差的符號,由于 10 小于 20,所以差為負(fù)數(shù),SIGN()
返回 -1。此時 DECODE
函數(shù)將參數(shù) -1 與 SIGN()
函數(shù)的返回值作比較。相等時,返回值 10,不相等時,返回值
20:
SELECT DECODE(SIGN(10-20),-1,10,20) FROM DUAL;
返回結(jié)果如下:
+------------------------------+
| DECODE(SIGN(10-20),-1,10,20) |
+------------------------------+
| 10 |
+------------------------------+
示例 2:使用 DECODE
函數(shù)查看數(shù)據(jù)中是否包含字符 S。
以下語句創(chuàng)建了表 EMP,表中包含列 ename 和 sal,并向其中插入值:
CREATE TABLE EMP(ename VARCHAR(30),sal NUMBER);
INSERT INTO EMP VALUES('CLARK', 2750);
INSERT INTO EMP VALUES('KING', 5300);
INSERT INTO EMP VALUES('MILLER', 1600);
INSERT INTO EMP VALUES('ADAMS', 1400);
INSERT INTO EMP VALUES('FORD', 3300);
INSERT INTO EMP VALUES('JONES', 3275);
INSERT INTO EMP VALUES('SCOTT', 3300);
INSERT INTO EMP VALUES('SMITH', 1100);
INSERT INTO EMP VALUES('ALLEN', 1900);
INSERT INTO EMP VALUES('BLAKE', 3150);
INSERT INTO EMP VALUES('JAMES', 1250);
INSERT INTO EMP VALUES('MARTIN', 1550);
INSERT INTO EMP VALUES('TURNER', 1800);
INSERT INTO EMP VALUES('WARD', 1550);
以下語句通過函數(shù) INSTR()
返回字符 S 在列 ename 的值中出現(xiàn)的位置,若沒有出現(xiàn)過則返回 0。此時 DECODE
函數(shù)將 INSTR
函數(shù)的返回值與 0 做比較,相等時說明字符 S 在值中沒有出現(xiàn)過,則 DECODE
函數(shù)返回值 不含有 S,否則返回值 含有 S :
SELECT ENAME, SAL, DECODE(INSTR(ename, 'S'), 0, '不含有 S', '含有 S') AS INFO FROM EMP;
查詢結(jié)果如下:
+--------+------+------------+
| ENAME | SAL | INFO |
+--------+------+------------+
| CLARK | 2750 | 不含有 S |
| KING | 5300 | 不含有 S |
| MILLER | 1600 | 不含有 S |
| ADAMS | 1400 | 含有 S |
| FORD | 3300 | 不含有 S |
| JONES | 3275 | 含有 S |
| SCOTT | 3300 | 含有 S |
| SMITH | 1100 | 含有 S |
| ALLEN | 1900 | 不含有 S |
| BLAKE | 3150 | 不含有 S |
| JAMES | 1250 | 含有 S |
| MARTIN | 1550 | 不含有 S |
| TURNER | 1800 | 不含有 S |
| WARD | 1550 | 不含有 S |
+--------+------+------------+
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: