mysql case 列名 when 和 case when的區別

最近寫了一個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 

相關文章
相關標籤/搜索