sql中如何使用case when

46次阅读
没有评论

共计 1876 个字符,预计需要花费 5 分钟才能阅读完成。

自动写代码机器人,免费开通

这篇文章主要介绍了 sql 中如何使用 case when,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。

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  张二  1
3  张三  
4  张四  
5  张五  2
6  张六  1
7  张七  2
8  张八  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

感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“sql 中如何使用 case when”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-16发表,共计1876字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)