ORACLE單行函式與多行函式之六:通用函式示例
主要實驗了幾個常用的判斷NULL值及DECODE的函式。
1.NVL(a,b):判斷A欄位的內容為null時,運算結果為指定的值。A不為NULL,則顯示A的值。
如果COMM的值為NULL,則返回顯示為200.BYS@bys1>Select COMM,NVL(COMM,200) From EMP where rownum<3;
COMM NVL(COMM,200)
---------- -------------
200
300 300
2.NVL2(a,b,c):如果第一個表示式a的值不為null,顯示錶達式2的值;如果a為null,顯示錶達式C的值。
如果comm值不為NULL,返回678;如果為NULL,返回999.
BYS@bys1>select sal,comm,nvl2(comm,678,999) from emp where rownum<5;
SAL COMM NVL2(COMM,678,999)
---------- ---------- ------------------
800 999
1600 300 678
1250 500 678
2975 999
3.NULLIF:如果前後兩個表示式的內容相等的,那就返回null,否則,返回第一個表示式的值
如果工資sal=3000,則返回NULL值。BYS@bys1>select sal,ename,nullif(sal,3000) from emp order by 1 desc;
SAL ENAME NULLIF(SAL,3000)
---------- ---------- ----------------
5000 KING 5000
3000 FORD
3000 SCOTT
2975 JONES 2975
2850 BLAKE 2850
2450 CLARK 2450
1600 ALLEN 1600
1500 TURNER 1500
1300 MILLER 1300
1250 WARD 1250
1250 MARTIN 1250
1100 ADAMS 1100
950 JAMES 950
4.COALESCE函式:用來匹配多個欄位的值,如果表示式1的值為null,顯示錶達式2的值,如果表示式2也為空,顯示錶達式3的值,依次類推
如下語句是,如果COMM是空,則顯示MGR。如果COMM也為空,則顯示EMPNO。如果EMPNO也為空,則顯示886.
KING的COMM是NULL值,MGR也是NULL,所以返回顯示了工號7839。
SMITH的COMM是NULL值,MGR為值,所以返回顯示了MGR的號碼:7902
ENAME EMPNO MGR COMM COALESCE(COMM,MGR,EMPNO,886)
---------- ---------- ---------- ---------- ----------------------------
SMITH 7369 7902 7902
ALLEN 7499 7698 300 300
WARD 7521 7698 500 500
JONES 7566 7839 7839
MARTIN 7654 7698 1400 1400
BLAKE 7698 7839 7839
CLARK 7782 7839 7839
SCOTT 7788 7566 7566
KING 7839 7839
TURNER 7844 7698 0 0
ADAMS 7876 7788 7788
JAMES 7900 7698 7698
FORD 7902 7566 7566
MILLER 7934 7782 7782
5.decode函式,DECODE函式可以直接對NULL做等值判斷
decode(條件,值1,返回值1,值2,返回值2,...值n,返回值n,預設值) 該函式的含義如下:
IF 條件=值1 THEN
RETURN(翻譯值1)
ELSIF 條件=值2 THEN
RETURN(翻譯值2)
......
ELSIF 條件=值n THEN
RETURN(翻譯值n)
ELSE
RETURN(預設值)
END IF
如下兩條語句,decode(5,1,'ok',2)中,如5等於1,返回OK。不等於1,返回2
BYS@bys1>select decode(5,1,'ok',2) from dual;
D
-
2
BYS@bys1>select decode(1,1,'ok',2) from dual;
DE
--
ok
如下的表:decode(xx,9,1,0),即XX行的值為9,則顯示1,不為9,則顯示0.
BYS@bys1>select * from aa;
XX
----------
9
5
5
9
5
9
9
7 rows selected.
BYS@bys1>select decode(xx,9,1,0),decode(xx,5,1,0) from aa;
DECODE(XX,9,1,0) DECODE(XX,5,1,0)
---------------- ----------------
1 0
0 1
0 1
1 0
0 1
1 0
可用於統計等於某個數值的列總共有多少行。分組函式不統計NULL值
BYS@bys1>select count(decode(xx,9,1,null)),count(decode(xx,5,1,0)) from aa;
COUNT(DECODE(XX,9,1,NULL)) COUNT(DECODE(XX,5,1,0))
-------------------------- -----------------------
4 7
相關文章
- 常見函式之單行函式函式
- Oracle分析函式與視窗函式Oracle函式
- webgl內建函式--通用函式Web函式
- Python 擴充之特殊函式(lambda 函式,map 函式,filter 函式,reduce 函式)Python函式Filter
- 六、函式函式
- 六.函式函式
- Oracle分析函式之開窗函式over()詳解Oracle函式
- Oracle OCP(03):字元函式、數字函式和日期函式Oracle字元函式
- oracle 函式Oracle函式
- oracle or 函式Oracle函式
- Oracle OCP(06):通用函式和條件表示式Oracle函式
- 【函式】Oracle12c 列轉行函式使用listagg函式Oracle
- Oracle中REGEXP_SUBSTR函式(字串轉多行)Oracle函式字串
- Kotlin之“with”函式和“apply”函式Kotlin函式APP
- Python函式與lambda 表示式(匿名函式)Python函式
- MySQL函式大全(字串函式,數學函式,日期函式,系統級函式,聚合函式)MySql函式字串
- 深入理解 函式、匿名函式、自執行匿名函式函式
- webgl內建函式--幾何函式與矩陣函式Web函式矩陣
- webgl內建函式--向量函式與紋理查詢函式Web函式
- python中id()函式、zip()函式、map()函式、lamda函式Python函式
- oracle資料庫常用分析函式與聚合函式的用法Oracle資料庫函式
- Oracle常用函式Oracle函式
- 7 Oracle 函式Oracle函式
- Oracle 字串函式Oracle字串函式
- Oracle 字串函式Oracle字串函式
- 何時使用函式表示式與函式宣告函式
- oracle 10g函式大全–日期型函式Oracle 10g函式
- 建構函式與解構函式函式
- 函式節流與函式防抖函式
- 回撥函式 與 函式閉包函式
- Python3之遞迴函式簡單示例Python遞迴函式
- 非同步操作系列之Generator函式與Async函式非同步函式
- python內建函式-eval()函式與exec()函式的區別Python函式
- JavaScript 匿名函式與具名函式執行效率比較JavaScript函式
- Oracle索引梳理系列(六)- Oracle索引種類之函式索引Oracle索引函式
- 第7章 IF函式 COUNTIF函式 SUMIF函式函式
- MySQL(四)日期函式 NULL函式 字串函式MySql函式Null字串
- PHP函式漏洞審計之addslashes函式-PHP函式
- 函式學習六函式