亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

條件判斷函數

本小節介紹 MySQL 提供的 IF、IFNULL、CASE 三種條件判斷函數或結構,條件判斷是為了實現控制流,在不同的條件下執行不同的流程。

1. IF函數

以 student 表為例,使用 IF() 函數對查詢結果的字段判斷:

SELECT name,IF(age > 17,'成年','未成年') AS age_group,id_number FROM student;

查詢結果如下圖:

圖片描述

Tips:如上圖所示, IF(age > 17,'成年','未成年') 表示若 age 字段滿足 age > 17 則展示為 成年,否則展示為 未成年。

2. IFNULL函數

為了演示方便,先向 teacher 表插入測試數據:

INSERT INTO teacher (name,age,id_number,email) VALUES
('Jack',30,'420117202006041111',NULL)('Mary',31,'420117202006042222','[email protected]'),
('Timo',35,'420117202006043333',NULL),
('Faker',38,'420117202006044444','[email protected]'),
('Bob'35,'420117202006045555',NULL);

執行結果如下圖:

圖片描述

使用 IFNULL() 函數對查詢結果的字段判斷:

SELECT name,age,id_number,IFNULL(email,'[email protected]') AS full_email FROM teacher;

執行結果如下圖:

圖片描述

Tips:如上圖所示, IFNULL(email,'[email protected]') 表示若 email 字段為 NULL ,則展示為 default @qq.com。

3. CASE條件判斷

以 teacher 表為例,將指定英文名對應的中文名展示出來:

SELECT 
*,
CASE name
WHEN 'Tom'  THEN '湯姆'
WHEN 'Jack' THEN '杰克'
WHEN 'Mary' THEN '瑪麗'
WHEN 'Timo' THEN '提莫'
WHEN 'Bob'  THEN '鮑勃'
WHEN 'Judy' THEN '朱蒂'
ELSE '未定義' END AS 'chinese_name'
FROM teacher;

執行結果如下圖:

圖片描述

Tips:如上圖所示, 對 name 字段進行條件判斷,并將判斷后的列重命名為 chinese_name,若指定的 name 字段的值滿足 WHEN 則展示相應的 THEN 后面的值。

4. 小結

本小節介紹了 IF、IFNULL、CASE 三種條件判斷,并且可以對指定字段進行條件判斷得到滿足需求的結果,需要注意的是,實際業務中這些條件判斷用的很少,建議這些數據的處理交給后端程序語言去處理,可以更好的維護和管理業務邏輯代碼。