Case When Then End

前言:

CASE語句具有兩種格式。1、簡單CASE函數 2、CASE搜索函數。

場景:

SQL中使用增加一些判斷呢???當然使用Case When Then End啦;

例子:

1、舉個萬年不變學生的問題。有張student表。字段:id、name、sex(0:男 1:女)、grade(成績) 查詢男學生大於80分女學生大於90的學生名單

CASE搜索函數:

SELECT * FROM `student ` where grade > (case when sex = 0 then 80 else 90 end) 

簡單CASE函數:

SELECT * FROM `student ` where grade > (case sex when 0 then 80 else 90 end) 

如果超過兩個條件呢?Case When Then End 

2、進入泰國的學校了哈。sex值增加個2代表人妖。-.-查詢男學生大於80分女學生大於90的人妖大於60的學生名單。

CASE搜索函數:

SELECT * FROM `student ` where grade > (case when sex = 0 then 80 when sex = 1 then 90 when sex = 2 then 60 end) 

簡單CASE函數:

SELECT * FROM `student ` where grade > (case sex when 0 then 80 when 1 then 90 when 2 then 60 end);

3、十分常用的場景:Code轉換Value。一般我們落庫的都是Code。比如上面的sex字段,0:男 1:女 2:人妖。現在我想要把對應的code顯示對應的中文怎麼辦??

SELECT *,(case sex when 0 then '男' when 1 then '女' when 2 then '人妖' end) as '性別' FROM `student ` WHERE grade > (case when sex = 0 then 80 when sex = 1 then 90 when sex = 2 then 60 end);

總結:

1、簡單CASE函數的寫法相對比較簡潔,

2、簡單CASE函數功能方面會有些限制,無法寫判定式,比如:CASE搜索函數可以自定義實現>(大於)、<(小於)、<>(不等於)、IN條件。而簡單CASE函數僅僅是等於條件。

3、爲了方便理解以上例子都是比較簡單的,其實case裏面也可以嵌套SQL等更爲複雜的邏輯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章