介紹在查詢 MySQL/MariaDB 資料庫時如何運用 IF
條件判斷,產生所需的資料。
在查詢 MySQL/MariaDB 資料庫時,我們可以運用
IF
條件判斷式,根據自訂的條件將原始的資料轉換成我們想要的型式,以下是 IF
的使用方法與實際應用範例。
IF
條件判斷
IF
的語法非常簡單:
IF(判斷條件, 條件成立傳回值, 條件不成立傳回值)
當判斷條件
成立時就會傳回條件成立傳回值
,否則就傳回條件不成立傳回值
。
以下是一個簡單的例子:
SELECT IF(2>1, "Yes", "No");
+----------------------+ | IF(2>1, "Yes", "No") | +----------------------+ | Yes | +----------------------+
實際應用範例
假設我們有一些人員的資料如下:
SELECT * FROM user_table;
+----+-------+------+ | id | name | age | +----+-------+------+ | 5 | John | 23 | | 6 | Mary | 45 | | 7 | Joe | 15 | | 8 | Smith | 21 | +----+-------+------+
如果我們想要將人員根據 age
區分為兩組,40
以下稱為 Young
,40
以上稱為 Old
,就可以這樣寫:
SELECT name, age, IF(age<40, "Young", "Old") FROM user_table;
+-------+------+----------------------------+ | name | age | IF(age<40, "Young", "Old") | +-------+------+----------------------------+ | John | 23 | Young | | Mary | 45 | Old | | Joe | 15 | Young | | Smith | 21 | Young | +-------+------+----------------------------+
如果感覺 IF
那一欄的名稱太冗長不好看,可以用 AS
改一下名稱:
SELECT name, age, IF(age<40, "Young", "Old") AS grp FROM user_table;
+-------+------+-------+ | name | age | grp | +-------+------+-------+ | John | 23 | Young | | Mary | 45 | Old | | Joe | 15 | Young | | Smith | 21 | Young | +-------+------+-------+
這樣就可以很輕鬆的根據年齡產生我們想要的分組資料了。
IF
的傳回值也可以是資料表中的欄位,假設我們想要將未滿 18
的人員名字隱藏起來,就可以這樣寫:
SELECT name, age, IF(age>=18, name, "***") AS mask_name FROM user_table;
+-------+------+-----------+ | name | age | mask_name | +-------+------+-----------+ | John | 23 | John | | Mary | 45 | Mary | | Joe | 15 | *** | | Smith | 21 | Smith | +-------+------+-----------+