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

創(chuàng)新互聯網站建設公司一直秉承“誠信做人,踏實做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務為基礎,以質量求生存,以技術求發(fā)展,成交一個客戶多一個朋友!專注中小微企業(yè)官網定制,成都網站建設、做網站,塑造企業(yè)網絡形象打造互聯網企業(yè)效應。
語法
DECODE (condition, search 1, result 1, search 2, result 2 ... search n, result n, default)DECODE 函數的含義可以用 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參數
|
參數 |
說明 |
|---|---|
condition、search 1...search n、result 1...result n、default |
數值型( |
注意
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 比較數值的大小。
以下語句使用 DECODE 函數來返回數值 10 與 20 當中較小的那個數。SIGN() 函數用來計算兩個值差的符號,由于 10 小于 20,所以差為負數,SIGN() 返回 -1。此時 DECODE 函數將參數 -1 與 SIGN() 函數的返回值作比較。相等時,返回值 10,不相等時,返回值 20:
SELECT DECODE(SIGN(10-20),-1,10,20) FROM DUAL;返回結果如下:
+------------------------------+
| DECODE(SIGN(10-20),-1,10,20) |
+------------------------------+
| 10 |
+------------------------------+示例 2:使用 DECODE 函數查看數據中是否包含字符 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);以下語句通過函數 INSTR() 返回字符 S 在列 ename 的值中出現的位置,若沒有出現過則返回 0。此時 DECODE 函數將 INSTR 函數的返回值與 0 做比較,相等時說明字符 S 在值中沒有出現過,則 DECODE 函數返回值 不含有 S,否則返回值 含有 S :
SELECT ENAME, SAL, DECODE(INSTR(ename, 'S'), 0, '不含有 S', '含有 S') AS INFO FROM EMP;查詢結果如下:
+--------+------+------------+
| 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)新互聯OceanBase教程:OceanBaseDECODE
當前URL:http://www.5511xx.com/article/cdgsgsi.html


咨詢
建站咨詢
