您的位置 首页 技术

sql中case when的用法

sql中case when的用法 case具有两种格式。简单case函数和case搜索函数。 1、简单case函数 case sex when '1' then…

sql中case when的用法

case具有两种格式。简单case函数和case搜索函数。

1、简单case函数

case sex  when '1' then '男'  when '2' then '女’  else '其他' end

2、case搜索函数

case when sex = '1' then '男'     when sex = '2' then '女'     else '其他' end</span>

这两种方式,可以实现相同的功能。简单case函数的写法相对比较简洁,但是和case搜索函数相比,功能方面会有些限制,比如写判定式。(免费学习视频教程推荐:mysql视频教程)

还有一个需要注重的问题,case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略。

比如说,下面这段sql,你永远无法得到“第二类”这个结果

case when col_1 in ('a','b') then '第一类'     when col_1 in ('a') then '第二类'     else '其他' end

实例演示:

首先创建一张users表,其中包含id,name,sex三个字段,表内容如下:

select * from users  ID        NAME                 SEX---------- -------------------- ----------1          张一                 2          张二                 13         张三                 4          张四                5          张五                 26          张六                 17          张七                 28          张八                 1

1、上表结果中的"sex"是用代码表示的,希望将代码用中文表示。可在语句中使用case语句:

select u.id,u.name,u.sex,   (case u.sex      when 1 then '男'      when 2 then '女'      else '空的'      end     )性别  from users u;                                    ID NAME                        SEX 性别--------------------------------------- -------------------- ---------- ------                                      1 张一                            空的                                      2 张二                          1 男                                      3 张三                            空的                                      4 张四                            空的                                      5 张五                          2 女                                      6 张六                          1 男                                      7 张七                          2 女                                      8 张八                          1 男

2、如果不希望列表中出现"sex"列,语句如下:

select u.id,u.name,    (case u.sex      when 1 then '男'      when 2 then '女'      else '空的'      end    )性别  from users u;                                      ID NAME                 性别--------------------------------------- -------------------- ------                                      1 张一                 空的                                      2 张二                 男                                      3 张三                 空的                                      4 张四                 空的                                      5 张五                 女                                      6 张六                 男                                      7 张七                 女                                      8 张八                 男

3、将sum与case结合使用,可以实现分段统计。

如果现在希望将上表中各种性别的人数进行统计,sql语句如下:

select    sum(case u.sex when 1 then 1 else 0 end)男性,    sum(case u.sex when 2 then 1 else 0 end)女性,    sum(case when u.sex <>1 and u.sex<>2 then 1 else 0 end)性别为空  from users u;         男性         女性       性别为空---------- ---------- ----------         3          2          0 --------------------------------------------------------------------------------SQL> select    count(case when u.sex=1 then 1 end)男性,    count(case when u.sex=2 then 1 end)女,    count(case when u.sex <>1 and u.sex<>2 then 1 end)性别为空  from users u;         男性          女       性别为空---------- ---------- ----------         3          2          0

以上就是sql中case when的用法的详细内容,更多请关注24课堂在线网其它相关文章!

本文来自网络,不代表24小时课堂在线立场,转载请注明出处:https://www.24ketang.cn/38530.html

为您推荐

返回顶部