zoukankan      html  css  js  c++  java
  • MySQL中case when的基本用法总结

    MySQL中case when的基本用法总结
    原创Backcanhave7 最后发布于2018-12-06 15:14:15 阅读数 439 收藏
    展开
    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的第一中用法理解为简单条件赋值,第二种用法理解为复杂条件赋值。
    ————————————————
    版权声明:本文为CSDN博主「Backcanhave7」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_41080850/article/details/84851263

  • 相关阅读:
    easyui datagrid 显示 footer
    ie浏览器 vuejs axios Promise 未定义
    react引入富文本编辑器TinyMCE
    react中ant-design组件实现textarea获取光标位置并插入表情图片
    前端日志埋点优化
    iframe父子页面通讯
    HTML5中的audio在react中的使用----语音播放进度条、倍速播放、下载等
    echarts简单入门
    在textarea里实现获取光标位置和选中内容
    lodash数组发现之旅--------The second day
  • 原文地址:https://www.cnblogs.com/think90/p/12360395.html
Copyright © 2011-2022 走看看