mysql之Case函数

本文介绍了MySQL中的Case函数,包括simple case和searched case两种形式,用于在SQL语句中实现条件判断逻辑。详细阐述了每种形式的语法结构、工作原理,并提供了多个示例,如根据条件返回不同的字符串结果,以及嵌套使用Case函数的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Case函数

1.Case函数
可以在SQL语句中实现“IF-THEN-ELSE”逻辑计算功能
有两种形式:simple case和searched case
simple case的语法结构:
CASE value
WHEN [compare_value] THEN result
[WHEN [compare_value] THEN result …]
[ELSE result] END

语义:将case后面的值value分别和每个when子句后面的值compare_value进行相等比较,一旦和某个when子句后面的值相等则返回相应的then子句后面的值result。如果和所有when子句后面的值都不相等,则返回else子句后面的值。没有else部分则返回null
value可以是字面量、表达式或者列名
CASE表达式的数据类型取决于跟在then或else后面的表达式的类型。这些类型必须相同(可尝试做隐式类型转换)。否则出错
SELECT CASE 1
WHEN 1 THEN ‘one’
WHEN 2 THEN ‘two’
ELSE ‘more’ END
result;
在这里插入图片描述
得到1980年后加入俱乐部的球员的号码、性别和名字。性别必须显示为“Female”或者“Male”
SELECT playerno,
CASE sex
WHEN ‘F’ THEN ‘Female’
ELSE ‘Male’ END sex,

NAME
FROM players
WHERE joined > 1980;
在这里插入图片描述
Searched case的语法结构:
CASE
WHEN [condition] THEN result
[WHEN [condition] THEN result …]
[ELSE result] END

语义:如果某个when子句后面的条件condition为true,则返回相应的when子句后面的值result。如果所有的when子句后面的条件condition都不为true,则返回else子句后面的值。没有else部分则返回null
例5.22 查找每个球员的编号、加入年份以及球员的年龄组
SELECT playerno,joined,
CASE
WHEN joined < 1980 THEN ‘青年组’
WHEN joined < 1983 THEN ‘少年组’
ELSE ‘儿童组’ END AS age_group
FROM players
ORDER BY joined;
在这里插入图片描述
Case表达式可以嵌套:
SELECT playerno,town,birth_date,
CASE town
WHEN ‘Stratford’ THEN
CASE birth_date
WHEN ‘1948-09-01’ THEN ‘old Stratford’
ELSE ’ young Stratford’ END
WHEN ‘Inglewood’ THEN
CASE birth_date
WHEN ‘1962-07-08’ THEN ‘old Inglewood’
ELSE ’ young Inglewood’ END
ELSE ‘Rest’ END AS TYPE
FROM players;
在这里插入图片描述

Case col1
When then
When then
[else]
整个流程:当col1满足第一个when条件时,返回then字句的信息,如果所有的when条件都不满足则返回else字句的信息,如果没有else字句则返回空

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值