MySQL IFNULL IF 與 CASE 函數

一般在寫 MySQL 的時,某些狀況需要用到判斷式,可以讓返回的結果透過條件來達成,甚至可以省略使用其他程式碼來整理需要的結果。

通常一般情況下,可以用 if 來判斷條件與結果,若是使用 if null,則可以判斷是否為空值,用 case 可以達成更複雜的判斷結果。

 

目錄

IFNULL

SELECT IFNULL(x, y)
如果x不是NULL(不包含0),IFNULL()返回x,否則它返回y。
IFNULL()返回一個數字或字符串值。

IF

SELECT IF(x, y, z)
如果x是TRUE(x不為0且x不為NULL),那麼IF()返回y,否則它返回z。
IF()返回一個數字或字符串值。
類似PHP中的 三元運算子

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

MySQL IF CASE 使用的表 - 1
MySQL IF CASE 使用的表 – 1

例如有8筆會員數,在MySQL呈現如下

若您要將取得出來的資料直接辨識性別,那麼語法就要下這樣:

MySQL IF CASE 使用的表 - 2
MySQL IF CASE 使用的表 – 2

輸出:

若您要將郵遞區號大於30000以上的編號都屬於台灣以南,其餘台灣以北,那麼語法就要下這樣:

MySQL IF CASE 使用的表 - 3
MySQL IF CASE 使用的表 – 3

輸出:

IFNULL(x, y)

屬於函數式運算結果,需要兩個參數,判斷第一個參數是否為 NULL,否則回傳的是第二個參數

IF(x, y, z)

屬於函數式運算結果,需要三個參數,判斷第一個參數若是 TRUE,則回傳第二個參數,否則回傳第三個參數

CASE column WHEN a THEN b WHEN c THEN d ELSE e

判斷一個欄位的內容,當欄位內容等於 a 時,則結果為 b、當內容等於 c 時,則結果為 d,否則結果為 e

CASE WHEN x THEN y ELSE z

判斷當欄位內容試算結果為 x 時,則結果為 y,否則結果為 z

相連文章

臉書留言