[Day13]空值转换函数

前几篇文章提及过,当资料表数值为空值时有三种情况,分别为:

  1. 目前不知道其值
  2. 未指派
  3. 没有值

但不管是何种情况,在SQL当中空值相当於运算中的无限大,必须加以转换後才能处理,而转换函数又分为四种:

  1. NVL():将任意资料类型的空值栏位转换成目标值
    下面是简单的举例:
NVL(commission_pct,0)

解释:如果commission_pct为空值,则输出0。

NVL(hire_date,'01-Jan-2014')

解释:如果hire_date为空值,则输出'01-Jan-2014'。

  1. NVL2():如果expr1不为空值,则输出expr2;如果expr1为空值,则输出expr3。
    下面是简单的举例:查询HR帐户中employees资料表中,部门50和部门80员工薪水及红利百分比,且计算年收入。
SELECT last_name, salary, commission_pct,
salary*(1+NVL2(commission_pct, commission_pct,0))*12"年收入"
FROM employees
WHERE department_id IN (50,80);

执行结果如下:
https://ithelp.ithome.com.tw/upload/images/20210928/20140915OZ9QAtlArC.png

  1. NULLIF:如果expr1等於expr2,输出空值;如果expr1不等於expr2,输出expr1。
    下面是简单的举例:查询HR的employees资料表,并比对员工的姓名长度。若相同则在比对结果中显示NULL;不相同则显示名字长度。
SELECT first_name, LENGTH(first_name)"名字字数",
last_name, LENGTH(last_name)"姓氏字数",
NULLIF(LENGTH(first_name),LENGTH(last_name))比对结果
FROM employees;

执行结果如下:
https://ithelp.ithome.com.tw/upload/images/20210928/20140915PRyX89lt7i.png

  1. COALESCE:输出引数数列中第一个非空值的值。
    下面是简单的举例:查询HR中employees资料表,无上司且无红利的员工,在栏位上显示"他是老板"。
SELECT last_name,employee_id,
COALESCE (TO_CHAR(commission_pct),TO_CHAR(manager_id),
'他是老板')
FROM employees;

执行结果如下:
https://ithelp.ithome.com.tw/upload/images/20210928/20140915p0wOzp5MMM.png


<<:  #13 No-code 之旅 — 简单快速开发漂亮的 React 元件 ft. Chakra UI

>>:  Day 13 - 那个被我忘记的 ref / useRef / createRef 下

【在厨房想30天的演算法】Day 18 演算法 : 搜寻 search II 指数搜寻、内插搜寻

Aloha!又是我是少女人妻 Uerica!白天楼上常常会施工,钻地板跟敲打的声音总是让人难以忍受,...

Day2安装vue我选择的是vue3!!

我的编译器使用vscode在终端机下 vue create XXXX(档案名称)即可看到这个画面 (...

DAY 9 角角恶魔

今天想要来尝试不同画风 本来要画一只古代鱼,但是失败了......( ˘•ω•˘ ) 只好改成练习画...

Python Flask API 初探

昨天架设完Python环境後, 今天要开始架设Python API的专案, 而我们今天使用的是Fla...

Microflows的Java升级版

在写Java以前想一下 在决定用Java解决问题前,其实很多功能在内建的Microflows中都能够...