學習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。