SQL数据库之IFNULL函数和NULLIF函数

学习IFNULL()函数 非空判断

解析

IFNULL(expression1, expression2)

如果expression1为null, 在函数返回expression2,否则将返回expression1。

而expression1可以为sql语句,expression2同样可以为sql语句,不是只能返回null

举例子说明

需求:第二高薪水

编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。

+----+--------+
| Id | Salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。

+---------------------+
| SecondHighestSalary |
+---------------------+
| 200 |
+---------------------+

--  解析SQL:查询非空判断(查询没有值,返回null)别名 SecondHighestSalary
-- 解析内置查询: select查询 distinct是忽略Salary 字段中包含重复数据的记录 form 表为 Employee order by排序 salary字段 desc升序 limit分页 开始1,结束1 也就是说只要第二条数据
select IFNULL((select distinct Salary from Employee order by salary desc limit 1,1),null)as SecondHighestSalary

  

 

 

 

扩展NULLIF ()函数  比较是否相等

解析

NULLIF(expression1, expression2)

如果两个参数等价,则返回NULL ;否则,返回第一个参数。

举例子说明

例如

mysql> select NULLIF(1,2);
+-------------+
| NULLIF(1,2) |
+-------------+
|           1 |
+-------------+
1 row in set (0.00 sec)

两个参数不相等,所以结果是第一个参数1。

再例如,

mysql> select NULLIF(1,1);
+-------------+
| NULLIF(1,1) |
+-------------+
|        NULL |
+-------------+
1 row in set (0.00 sec)

两个参数相等,所以结果是NULL。

 

 

posted @ 2021-02-08 19:54  骚哥  阅读(1477)  评论(0编辑  收藏  举报