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 

相关文章
相关标签/搜索