新聞中心
DECODE 函數(shù)依次用參數(shù) search 與 condition 做比較,直至 condition 與 search 的值相等,則返回對應(yīng) search 后跟隨的參數(shù) result 的值。如果沒有 search 與 condition 相等,則返回參數(shù) default 的值。

創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司一直秉承“誠信做人,踏實做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個客戶多一個朋友!專注中小微企業(yè)官網(wǎng)定制,成都網(wǎng)站建設(shè)、做網(wǎng)站,塑造企業(yè)網(wǎng)絡(luò)形象打造互聯(lián)網(wǎng)企業(yè)效應(yīng)。
語法
DECODE (condition, search 1, result 1, search 2, result 2 ... search n, result n, default)DECODE 函數(shù)的含義可以用 IF...ELSE IF...END 語句進行解釋:
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ù)
|
參數(shù) |
說明 |
|---|---|
condition、search 1...search n、result 1...result n、default |
數(shù)值型( |
注意
search 1 ~ search n 不能為條件表達式,這種情況只能用 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,所以差為負數(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 |
+--------+------+------------+ 分享名稱:創(chuàng)新互聯(lián)OceanBase教程:OceanBaseDECODE
標(biāo)題來源:http://m.fisionsoft.com.cn/article/cdgsgsi.html


咨詢
建站咨詢
