文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL中case when的两种基本用法及区别总结

2023-05-18 20:10

关注

MySQL中的case when有用两种用法,官方文档中的说明如下:

用法一:

CASE case_value
    WHEN when_value THEN statement_list
    [WHEN when_value THEN statement_list] ...
    [ELSE statement_list]
END CASE

用法二:

CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE

下面通过具体示例来说明case when这两种用法的区别:

创建salary表,并向salary表中插入数据:

# 创建salary表:
create table salary(
id int,
name char(1),
sex char(1),
salary int
)engine myisam charset utf8;
#向salary表中插入数据:
insert into salary values
(1,'A','m',2500),
(2,'B','f',1500),
(3,'C','m',5500),
(4,'D','f',500);

示例一:在查询语句中实现更改salary表中员工的性别,即如果员工的性别是‘m’,则将其改为‘f’,反之如果性别为‘f’,则将其改为‘m’。

采用case when的第一种用法:

select id,name,
case sex
when 'f' then 'm'
else 'f' end as new_sex,salary from salary;

这种用法通过比较case后面的case_value和第一个when后面的when_value,若二者相等则给new_sex赋一个指定的值,若二者值不相等,则比较case_value与第二个when后面的when_value是否相等,以此类推。若case_value与所有的when_value都不相等,且有else语句的话,则把else后面的值赋给new_sex,否则把null值赋给new_sex。

采用case when的第二种用法:

select id,name,case
when sex='f' then 'm'
else 'f' end as new_sex,salary from salary;

上述代码中,when后面是一个逻辑表达式,若表达式为真,则把then后面的值赋给new_sex;若第一个when后面表达式为假,则查看第二个when后面的逻辑表达式,以此类推的;若所有when后面的逻辑表达式均为假,且有else语句的话,则把else后面的值赋给new_sex,否则把null值赋给new_sex.

示例二:在查询语句中实现将salary表中员工的工资归类。归类依据是,工资在1000元以下的归为‘low’类,工资在1000-3000元范围归为‘middle’类,工资在3000元以上的归为‘high’类。

这种情况只能采用case when的第二种用法:

select id,name,sex,case
when salary > 3000 then 'high'
when salary between 1000 and 3000 then 'middle'
else 'low' end as salary_level from salary;

假如以3000元为界限,将3000元以上的工资归为‘high'类,3000元以下包括3000元的工资归为‘low’类,则此时也可以采用case when的第一种用法:

select id,name,sex,case salary>3000
when True then 'high'
else 'low' end as salary_level from salary;

总结:由前文所述可知,case when的第一类用法只适用于二值比较问题,而case when的第二种用法的适用范围更广。因此我将case when的第一中用法理解为简单条件赋值,第二种用法理解为复杂条件赋值。

补充:MySQL中的case when 中对于NULL值判断

总结

到此这篇关于MySQL中case when的两种基本用法及区别总结的文章就介绍到这了,更多相关MySQL中case when用法内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯