SQL中的case when函数的用法
case函数有两种格式,即简单case函数和case搜索函数
简单case函数
语法:
case column
when <condition> then value
when <condition> then value
.....
else value end
示例:
case sex
when '1' then '男'
when ‘2’ then '女'
else “其它” end
case搜索函数
语法:
case
when <condition> [, <condition>] then value
when <condition> [, <condition>] then value
....
else value end
示例:
case when sex = ‘1’ then ‘男’
when sex = ‘2’ then “女”
else ‘其它’ end
简单case函数重在简洁,但是它只适用于这种单字段的单值比较,
case搜索函数的优点在于适用于所有比较(包括多值比较)的情况,但case搜索函数只返回第一个符合条件的值,剩下的case部分将会自动忽略;
如下面这段SQL是永远无法得到“第二类”的结果:
case when type in (‘a’, 'b')then '第一类'
when type in (‘a’) then “第二类”
else ‘其他类’ end
case的行转列
case用的比较广泛的 功能就是行转列,即将记录行里的数据按条件转换成具体的列
转换成
select 姓名,
max(case 课程 when N'语文' then 分数 else 0 end)语文,
max(case 课程 when N'数学' then 分数 else 0 end)数学,
max(case 课程 when N'物理' then 分数 else 0 end)物理,
from score
group by 姓名
或者使用最新的语法,
select * from score
pivot (max(分数) for 课程 in (语文,数学,物理))
in:行转列的列部分
max:是聚合in里面的内容,也可以是其它聚合函数:sum,min,count等
pivot:固定写法,是case when的一种简略写法
case的可以很好的将需要的数据单独显示在一列里面
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现