29 條件判斷函式
阿新 • • 發佈:2020-06-25
本小節介紹 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]')
表示若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
三種條件判斷,並且可以對指定欄位進行條件判斷得到滿足需求的結果,需要注意的是,實際業務中這些條件判斷用的很少,建議這些資料的處理交給後端程式語言去處理,可以更好的維護和管理業務邏輯程式碼。