空值相关函数
函数介绍
函数 | 作用 |
---|---|
NVL(x1,x2) | 如果x1为NULL,则该函数显示x2的值 |
NVL2(x1,x2,x3) | 如果x1的值为NULL,则该函数显示x3的值;不为NULL,显示x2的值 |
NULLIF(x1,x2) | 如果x1=x2返回NULL;若不等,则返回第一个表达式的值; |
COALSECE(x1,x2,x3,…xn) | 如果全为NULL,则函数值为NULL;若有一项不为NULL,则显示第一个不为空的项;若三项都不为空,则显示最前面的一项; |
案例代码演示
--两个参数都不为空,返回第一个参数
SQL> SELECT NVL(0,1) FROM DUAL;
NVL(0,1)
----------
0
--第一个参数为空,则返回第二个参数
SQL> SELECT NVL(NULL,1) FROM DUAL;
NVL(NULL,1)
-----------
1
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-- 第一个参数不为空值,返回第二个
SQL> SELECT NVL2(1,2,3) FROM DUAL;
NVL2(1,2,3)
-----------
2
--第一个参数为空,则返回第三个
SQL> SELECT NVL2(NULL,2,3) FROM DUAL;
NVL2(NULL,2,3)
--------------
3
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
--两个参数相等返回第一个
SQL> SELECT NULLIF(1,2) FROM DUAL;
NULLIF(1,2)
-----------
1
--两个参数不相等,返回空
SQL> SELECT NULLIF(2,2) FROM DUAL;
NULLIF(2,2)
-----------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
--参数全部为空,返回空
SQL> SELECT COALESCE(NULL,NULL,NULL) FROM DUAL;
C
----------
--有一个不为空,返回第一个非空值
SQL> SELECT COALESCE(NULL,2,NULL) FROM DUAL;
COALESCE(NULL,2,NULL)
---------------------
2
--都不为空则返回第一个值
SQL> SELECT COALESCE(1,2,3) FROM DUAL;
COALESCE(1,2,3)
---------------
1
编码解码函数
函数代码介绍
-
DECODE
-
DECODE函数类似于 逻辑条件判断中的if —elif — else
-
DECODE(条件,条件1,返回值1,条件2,返回值2,…条件n,返回值n,其他)
函数的解释含义:
IF 条件=条件1 THEN
RETURN(返回值1)
ELSIF 条件=条件2 THEN
RETURN(返回值2)
…
ELSE
RETURN(其他)
END IF
-
SQL> SELECT DECODE(99,9,'不相等',99,'相等','no') FROM DUAL;
DECODE(99,9,
------------
相等
-
DUMP
-
DUMP(expr, [return_fmt] [start_position] [length]])
-
有四个基本参数,但是最少的时候可以不填,直接返回NULL,另外的三个参数也都有各自的默认值。
参数详细介绍
expr:这个参数是进行操作的数据(数字或字符串等,可以是各个类型的值)return_fmt:指返回参数的格式,有5种用法:
-
1)8:以8进制返回结果的值
-
2)10:以10进制返回结果的值(默认)
-
3)16:以16进制返回结果的值
-
4)17:以单字符的形式返回结果的值
-
5)1000:以上4种加上1000,表示在返回值中加上当前字符集
start_position:开始进行返回的字符位置
length:需要返回的字符长度
-
-
案例代码演示
-- 不传入参数
SQL> SELECT DUMP('abc') FROM DUAL;
DUMP('ABC')
--------------------------------------------
Typ=96 Len=3: 97,98,99
--传入三个参数的时候,最后一个长度参数不传。则默认后边剩余的所有字符
SQL> SELECT DUMP('abcdef',1000,2) FROM DUAL;
DUMP('ABCDEF',1000,2)
----------------------------------------------
Typ=96 Len=6: b,c,d,e,f
--全部参数传入
SQL> SELECT DUMP('abcdef',1000,2,4) FROM DUAL;
DUMP('ABCDEF',1000,2,4)
------------------------------------------
Typ=96 Len=6: b,c,d,e
--在返回值中加上字符集
SQL> SELECT DUMP('abcdef',1016,2,4) FROM DUAL;
DUMP('ABCDEF',1016,2,4)
--------------------------------------------------------------------------------
Typ=96 Len=6 CharacterSet=AL32UTF8: 62,63,64,65
函数嵌套
函数介绍
- 当一个函数定义在另一个函数的内部的时候,也就是说一个函数的返回值作为另一个函数的参数的时候就形成了函数嵌套.
- 单行函数可以嵌套到任意层级
- 嵌套函数的执行顺序是由内到外
案例演示
-- 利用嵌套函数,查询二十年后的今天,返回日期,星期
SQL> SELECT TO_CHAR( ADD_MONTHS(TO_DATE(SYSDATE),12*20),'YYYY-mm-dd day') BIRTHDAY_182 FROM DUAL;
BIRTHDAY_182
----------------------------------------------
2040-03-16 星期二
边学习边记录,若有不足之处欢迎留言指点…