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() 返回一個數字或字符串值。

類似 PHP 中的 三元運算子

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

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

例如有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

輸出:

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

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

SELECT user_id,user_name,user_sax,
(CASE WHEN user_code>30000 THEN '台灣以北' ELSE '台灣以南' END) AS Area
FROM user

輸出:

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

IFNULL(x, y)

IF(x, y, z)

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

CASE WHEN x THEN y ELSE z

相連文章

臉書留言