Mysql-case when 使用

作者: 泥称已被栈用 | 来源:发表于2018-12-28 22:36 被阅读5次

    当我们在查询数据的时候,我们可能希望对于一些数字的枚举值展示出其实际的文案值
    比如:性别1我们想显示2我们想显示

    一、case 使用场景

    1.1 简单函数

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

    1.2 case搜索函数

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

    二、使用示例

    2.1 简单case函数;

    case `gender`
    when 1 then '男'
    when 2 then '女'
    else '未知'
    end
    

    2.2 case搜索函数。

    case 
    when gender = 1 then '男'
    when gender = 2 then '女'
    else '未知' 
    end
    

    准备数据如下


    create table if not exists test_user(
      `id` bigint(20) not null AUTO_INCREMENT comment '主键自增ID',
      `name` varchar(64) not null comment '姓名',
      `gender` integer not null comment '性别,1: 男, 2: 女',
      `country_code` integer not null comment '所属国家CODE',
      primary key (`id`)
    ) charset = 'utf8mb4' comment '测试表';
    

    一张参照表

    国家 country_code
    中国 100
    美国 110
    法国 120
    雪国 其他

    INSERT INTO `test_user` (`name`, `gender`, `country_code`)
    VALUES 
      ('清风', 1, 100), 
      ('玄武', 2, 100), 
      ('Kobe', 1, 110), 
      ('John Snow', 1, 200), 
      ('Peut-être', 0, 120);
    

    三、实战示例

    3.1 使用case简单函数

    select `id`, `name`, `gender`, 
    (case `gender`
    when 1 then '男'
    when 2 then '女'
    else '未知'
    end) as '性别',
    `country_code`
    from test_user;
    
    简单case查询结果.png

    3.2 使用case搜索函数查询

    select id, `name`, gender, 
    (case 
    when gender = 1 then '男'
    when gender = 2 then '女'
    else '未知' 
    end) as '性别', 
    country_code,
    (case 
    when country_code = 100 then '中国'
    when country_code = 110 then '英国'
    when country_code = 120 then '法国'
    else '雪国' 
    end) as '国籍'
    from test_user;
    
    搜索函数查询结果.png

    相关文章

      网友评论

        本文标题:Mysql-case when 使用

        本文链接:https://www.haomeiwen.com/subject/dqcylqtx.html