1. 程式人生 > Mysql入門教學 >29 條件判斷函式

29 條件判斷函式

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

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.小結

本小節介紹了 IFIFNULLCASE 三種條件判斷,並且可以對指定欄位進行條件判斷得到滿足需求的結果,需要注意的是,實際業務中這些條件判斷用的很少,建議這些資料的處理交給後端程式語言去處理,可以更好的維護和管理業務邏輯程式碼。