SQL-条件函数(CASE函数)

CASE函数

定义和使用

CASE 语句遍历条件并在满足第一个条件时返回一个值(如 IF-THEN-ELSE 语句)。 因此,一旦条件为真,它将停止读取并返回结果。

如果没有条件为真,它将返回 ELSE 子句中的值。

如果没有ELSE部分且没有条件为真,则返回NULL。
分为:

  • 简单CASE语句
  • 搜索CASE语句

注:可以用在任何允许使用表达式的地方,但不能单独作为一个语句执行。

语法

CASE
  WHEN condition1 THEN result1
  WHEN condition2 THEN result2
  WHEN condition3 THEN result3
  ELSE result
END;

参数值

简单CASE语句

CASE 测试表达式
  WHEN 简单表达式1 THEN 结果表达式1
  WHEN 简单表达式2 THEN 结果表达式2 …
  WHEN 简单表达式n THEN 结果表达式n
  [ ELSE 结果表达式n+1 ]
END

计算测试表达式,按从上到下的书写顺序将顺序表达式的值与每个WHEN子句的简单表达式进行比较。
如果每个简单表达式的值与测试表达式的值相等,则返回地有个与之匹配的WHEN子句所对应的结果表达式的值。
如果所有简单表达式的值与测试表达式的值都不相等,
若指定了ELSE子句,则返回ELSE子句中指定的结果表达式的值;
若没有指定ELSE子句,则返回NULL。

例. 查询班级表中的学生的班号、班名、系号和班主任号,并对系号作如下处理:
当系号为1时,显示 “计算机系”;
当系号为2时,显示 “软件工程系”;
当系号为3时,显示 “物联网系”。

SELECT 班号,班名,
CASE 系号
  WHEN 1 THEN '软件工程'
  WHEN 2 THEN '计算机系'
  WHEN 3 THEN '物联网系'
  END AS 系号,班主任号
FROM 班级表 

搜索CASE函数

CASE
  WHEN 布尔表达式1 THEN 结果表达式1
  WHEN 布尔表达式2 THEN 结果表达式2 …
  WHEN 布尔表达式n THEN 结果表达式n
  [ ELSE 结果表达式n+1 ]
END

按从上到下的书写顺序计算每个WHEN子句的布尔表达式。
返回第一个取值为TRUE的布尔表达式所对应的结果表达式的值。
如果没有取值为TRUE的布尔表达式,
则当指定了ELSE子句时,返回ELSE子句中指定的结果;
如果没有指定ELSE子句,则返回NULL。

上面的例题用搜索CASE来做:

SELECT 班号 ,班名,
CASE
WHEN 系号=1 THEN '软件工程系'
WHEN 系号=2 THEN '计算机系'
WHEN 系号=3 THEN '物联网系'
END AS 系号,班主任号
FROM 班级表

题目:现在运营想要将用户划分为25岁以下和25岁及以上两个年龄段,分别查看这两个年龄段用户数量
本题注意:age为null也计为25岁一下
示例:user_profile


根据示例,你的查询应返回以下结果:

SELECT CASE WHEN age < 25 OR age IS NULL THEN '25岁以下' 
            WHEN age >= 25 THEN '25岁及以上'
            END (AS) age_cut,COUNT(*)number
FROM user_profile
GROUP BY age_cut
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容