共计 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 问一下细节