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 

 

posted @ 2019-06-05 10:45  *眉间缘*  阅读(2919)  评论(0编辑  收藏  举报