case 函数语法与使用
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,case 函数是聚合函数的一种,为统计函数。case表达式:CASE selector WHEN value1 THEN action1; WHEN value2 THEN a
千家信息网最后更新 2025年01月24日case 函数语法与使用
case 函数是聚合函数的一种,为统计函数。
case表达式:
CASE selector WHEN value1 THEN action1; WHEN value2 THEN action2; WHEN value3 THEN action3
一、CASE WHEN 表达式有两种形式
(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
本篇文章未讲解关于case 搜索函数用法。
二、CASE WHEN 应用
学生性别统计student表:
------------查询表中所有的性别
select ID, (case sex when '1' then '男' when '2' then '女' ELSE 'null' END) AS '性别', province as '省份' from `student` ORDER BY `ID` ASC ;
查询结果如下:
-------------查询江苏省与浙江省男生与女生个数分别是多少。
第一种计算方法:以省份区分
select province AS '江苏省', COUNT(case sex when '男' THEN '男' ELSE null END ) AS '男生', COUNT(case sex when '女' THEN '女' ELSE null END ) AS '女生' from student where `province` ='江苏'UNIONselect province AS '江苏省', COUNT(case sex when '男' THEN '男' ELSE null END ) AS '男生', COUNT(case sex when '女' THEN '女' ELSE null END ) AS '女生' from `student` where `province` ='浙江'
查询结果如下:
第二种计算:以性别区分
select sex, COUNT(case province when '江苏' THEN '江苏' ELSE null END ) AS '江苏省', COUNT(case province when '浙江' THEN '浙江' ELSE null END ) AS '浙江省' from `student` group by `sex` ;
查询结果如下:
注意:
COUNT(case province when '江苏' THEN '江苏' ELSE null END ) AS '江苏省',
可以简写成:
COUNT( case province when '江苏' THEN '江苏' END ) AS '江苏省'
----------查询各省份的男女数量
select province , sex, COUNT(*) AS '总数' from student GROUP BY province ,sex;
查询结果如下:
----------只统计了浙江省的男女数目
select sex , province, count(case province when '江苏' then '江苏' end )as '数量' from student group by province, sex;
查询结果如下:
当数据较多时,使用以上数据查询占用大量的资源,因此可以简单写成以下形式:
select sex as '性别' , count(case province when '江苏' then '江苏' end )as '浙江省' from student group by sex;
查询结果如下:
补充:
(1)select (case province when '浙江' then '浙江' when '江苏' then '江苏' else province end ) as 省份 from student;
else province 默认为除浙江、江苏 外显示其他城市
(2) case when 可以跟不相等的判断。
可用于=,>=,<,<=,<>,is null,is not null 等的判断。
如:
三、CASE WHEN 与 DECODE 比较
1,DECODE Oracle 特有;
2,CASE WHEN Oracle , SQL Server, MySQL 都可用;
3,DECODE 只能用做相等判断,但是可以配合sign函数进行大于,小于,等于的判断,
CASE 可用于=,>=,<,<=,<>,is null,is not null 等的判断;
4,DECODE 使用其来比较简洁,CASE 虽然复杂但更为灵活;
江苏
浙江
查询
函数
结果
江苏省
性别
省份
浙江省
女生
男生
统计
形式
数据
数量
男女
表达式
搜索
复杂
简洁
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全大字手写
合工大网络安全工作
高斯数据库多少钱一套
火妹服务器
金蝶数据库的表格怎么用
徐州可视化智慧医院软件开发
兴化小型网络技术批发价
关于网络安全知识竞赛征文
郑州南北网络技术有限公司
触发器 跨服务器
无线路由器网络安全设置
果洛网络技术是什么
服务器40m二级缓存
网络安全范围是多少
税务局网络安全条例
互联网金融叫金融科技
服务器上用的是什么硬盘
企业管理软件开发提案
客户端查看服务器端口
新手学什么网络技术好
服务区食品安全风险数据库
互联网软件开发龙头
第八届服务器联赛冠军
高频交易服务器私募
四川专业软件开发定制费用
上海北斗校时服务器设置
网络安全书籍基础
亿圆电脑软件开发公司
网络安全和保密
民航危险源数据库