mysql case 列名 when 和 case when的區別


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM