MySQL case when 用法


MySQL case when 用法

最近有個需求,需要對返回結果判斷並進行結果映射,使用到了 case when 語句。

1、語法

1.1、簡單函數

CASE case_value
    WHEN when_value THEN statement_list
    [WHEN when_value THEN statement_list] ...
    [ELSE statement_list]
END CASE

1.2、搜索函數

CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE

2、示例

2.1、簡單函數示例

這里以查詢 user 的 sex 字段為例, 當 sex = 'f' 時結果映射為 '女', 反之映射為 '男':

select u.id, u.name, 
case u.sex when 'f' then '女' else '男' end as sex
from user u
where u.id <= 3

結果如下:

image-20211228114251689

可以看到 sex 字段的結果變為了 '男'、'女'。

2.2、搜索函數示例

同樣查詢 user 的 sex 字段,注意比較這兩種寫法的區別

select u.id, u.name, 
case when u.sex = 'f' then '女' else '男' end as sex
from user u
where u.id <= 3

when后面是一個邏輯表達式,若表達式為真,則 sex 的結果為 '女',若表達式為假,則 sex 的結果為 '男',

執行查詢可以得到上面示例一樣的結果。

3、兩種語法選擇哪種?

一般情況下選擇搜索函數,即第二種,能夠面對更加復雜的查詢。

現在要查詢 user 的 age 字段,即客戶的年齡,不同的 age 對應的年齡段稱呼不同:

select u.id, u.name, 
case when u.age <= 18 then '未成年'
when u.age between 19 and 40 then '青年'
else '中年' end as '年齡段'
from user u
where u.id <= 3

第一種語法無法滿足這樣復雜的查詢,故學習使用搜索函數便可以了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM