MySQL IFNULL IF 與 CASE 函數 的 3 種例子
一般在寫 MySQL 時,某些狀況需要用到判斷式,可以讓返回的結果透過條件來達成,甚至可以省略使用其他程式碼來整理需要的結果。
通常一般情況下,可以用 if 來判斷條件與結果,若是使用 if null,則可以判斷是否為空值,用 case 可以達成更複雜的判斷結果,就像是以前常聽到的 if else 或 if then else。
IFNULL
SELECT IFNULL(x, y)
如果x不是NULL(不包含0),IFNULL()返回x,否則它返回y。
IFNULL() 返回一個數字或字符串值。
SELECT IFNULL(0, 1)
=> 0
SELECT IFNULL(1, 10)
=> 1
SELECT IFNULL(NULL, 'YES')
=> YES
IF
SELECT IF(x, y, z)
如果x是TRUE(x不為0且x不為NULL),那麼IF()返回y,否則它返回z。
IF() 返回一個數字或字符串值。
SELECT IF(2>3, 3, 4)
=> 4
SELECT IF(0, 'Yes', 'No')
=> No
CASE
SELECT CASE column
WHEN a THEN b
WHEN c THEN d
ELSE e
END若column等於a,則返回b
若column等於c,則返回d
否則返回e
另外,a與c可為運算式,例如a<10,只要是a小於10都返回b
例如有8筆會員數,在MySQL呈現如下
若您要將取得出來的資料直接辨識性別,那麼語法就要下這樣:
SELECT user_id,user_name,
(CASE user_sax WHEN '0' THEN 'Gurl' WHEN '1' THEN 'Man' END ) as Sax,
user_code
FROM user
輸出:
若您要將郵遞區號大於30000以上的編號都屬於台灣以南,其餘台灣以北,那麼語法就要下這樣:
SELECT user_id,user_name,user_sax,
(CASE WHEN user_code>30000 THEN '台灣以北' ELSE '台灣以南' END) AS Area
FROM user
輸出:
臉書留言