Mysql 常用函數(4)- case 函數

Mysql常用函數的匯總,可看下面系列文章

//www.cnblogs.com/poloyy/category/1765164.html

 

case 的作用

  • if 的高級版,類似Java 裡面的  switch … case 
  • 通過條件表達式匹配 case 對應的值,然後執行對應的操作

 

簡單的 case 的語法格式

只有一個條件表達式

CASE  <表達式>
   WHEN <值1> THEN <操作>
   WHEN <值2> THEN <操作>
   ...
   ELSE <操作>
END;

語法格式說明

  • 將 <表達式> 的值 逐一和 每個 when 跟的 <> 進行比較
  • 如果跟某個<值>想等,則執行它後面的 <操作> ,如果所有 when 的值都不匹配,則執行 else 的操作
  • 如果 when 的值都不匹配,且沒寫 else,則會報錯

 

先看看emp表有什麼數據

 

簡單 case 的栗子:

根據部門id進行判斷部門名稱

SELECT name,dept_id,
CASE
        dept_id 
        WHEN 0 THEN
        "實習生" 
        WHEN 1 THEN
        "銷售部" 
        WHEN 2 THEN
        "資訊部" 
        WHEN 2 THEN
        "財務部" ELSE "沒有部門" 
    END AS "部門" 
FROM
    emp;

 

可搜索 case 的語法格式

CASE
    WHEN <條件1> THEN <操作>
    WHEN <條件2> THEN <操作>
    ...
    ELSE <操作>
END;

語法格式說明

  • 每個 <條件> 都是獨立的,可以用 and 來連接多個查詢條件
  • 不同 <條件> 是互不關聯且互不影響的

 

可搜索 case 的栗子

每個條件都是不一樣的,可以任意指定查詢條件,可簡單可複雜

select name,dept_id,
case 
when dept_id=1 and leader != 0 and is_enable !=0 then "銷售部在職員工"
when dept_id =2 and leader = 0 then "資訊部大佬"
when leader = 8 then "任我行大佬"
else "啥都不是"
end
from emp;

 

重點

記得結尾要加 end !!!!

記得結尾要加 end !!!!

記得結尾要加 end !!!!