最近寫了一個sql,才發現有些狀況不能用case 列名 whensql
(case ts.score when ts.score BETWEEN 9 and 10 then '優' when ts.score BETWEEN 8 and 8.9 then '良' when ts.score BETWEEN 7 and 7.9 then '中' else '差' END ) score_type,
我發現這樣寫查出來的結果一直走的是else的條件函數
後來百度了一下 發現這兩種寫法是有必定的差異的spa
case具備兩種格式。簡單case函數和case搜索函數。code
--簡單case函數 case sex when '1' then '男' when '2' then '女’ else '其餘' end --case搜索函數 case when sex = '1' then '男' when sex = '2' then '女' else '其餘' end
這兩種方式,能夠實現相同的功能。簡單case函數的寫法相對比較簡潔,可是和case搜索函數相比,功能方面會有些限制,好比寫斷定式。blog
還有一個須要注重的問題,case函數只返回第一個符合條件的值,剩下的case部分將會被自動忽略。class
後來我用搜索函數這種寫法寫百度
CASE WHEN score BETWEEN 9 AND 10 THEN '優' WHEN score BETWEEN 8 AND 8.9 THEN '良' WHEN score BETWEEN 7 AND 7.9 THEN '中' ELSE '差' END