天天看點

MySQL中CASE...WHEN...簡單使用

當我們執行一個查詢的時候,不同的條件,我們可能需要顯示不同的結果,這是就少不了CASE...WHEN的使用,下面介紹一下這種文法的基礎使用方法。

Case具有兩種格式。簡單Case函數和Case搜尋函數。

簡單Case函數

SELECT id,CASE sex

WHEN '1' THEN '男'

WHEN '2' THEN '女'

ELSE '其他' END AS '性别' FROM student

Case搜尋函數 

SELECT id,CASE WHEN sex = '1' THEN '男' 

WHEN sex = '2' THEN '女' 

ELSE '其他' END  AS '性别' FROM student

這兩種方式,可以實作相同的功能。簡單Case函數的寫法相對比較簡潔,但是和Case搜尋函數相比,功能方面會有些限制,比如寫判斷式(>=<)。還有一個需要注意的問題,Case函數隻傳回第一個符合條件的值,剩下的Case部分将會被自動忽略。例:SELECT CASE WHEN column IN ( 'a', 'b') THEN '第一類'  

WHEN column IN ('a')  THEN '第二類' 

ELSE'其他' END

這個查詢,你永遠無法得到“第二類”這個結果,其實就類似于if...elseif...條件一樣,隻要符合并進了第一個條件,就執行邏輯并傳回結果,不會再進入第二個條件,除非不符合第一個條件的時候,才會走下一個條件。

使用場景:當我們查詢status這樣的狀态字段時,mysql資料中一般存的都是1,2,3,4這樣的tinyint類型字段,但我們拉excel報表時卻要根據這個狀态顯示“未付款”,“已付款未發貨”,“已發貨未評價”,“已評價”等文字狀态,友善查閱,這種就是使用CASE...WHEN...的時候。

繼續閱讀