最近寫了一個sql,才發現有些情況不能用case 列名 when
(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的條件
后來百度了一下 發現這兩種寫法是有一定的差別的
case具有兩種格式。簡單case函數和case搜索函數。
--簡單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搜索函數相比,功能方面會有些限制,比如寫判定式。
還有一個需要注重的問題,case函數只返回第一個符合條件的值,剩下的case部分將會被自動忽略。
后來我用搜索函數這種寫法寫
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