zoukankan      html  css  js  c++  java
  • MySQL case when 用法

    MySQL case when 用法

    最近有个需求,需要对返回结果判断并进行结果映射,使用到了 case when 语句。

    1、语法

    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
        WHEN search_condition THEN statement_list
        [WHEN search_condition THEN statement_list] ...
        [ELSE statement_list]
    END CASE
    

    2、示例

    2.1、简单函数示例

    这里以查询 user 的 sex 字段为例, 当 sex = 'f' 时结果映射为 '女', 反之映射为 '男':

    select u.id, u.name, 
    case u.sex when 'f' then '女' else '男' end as sex
    from user u
    where u.id <= 3
    

    结果如下:

    image-20211228114251689

    可以看到 sex 字段的结果变为了 '男'、'女'。

    2.2、搜索函数示例

    同样查询 user 的 sex 字段,注意比较这两种写法的区别

    select u.id, u.name, 
    case when u.sex = 'f' then '女' else '男' end as sex
    from user u
    where u.id <= 3
    

    when后面是一个逻辑表达式,若表达式为真,则 sex 的结果为 '女',若表达式为假,则 sex 的结果为 '男',

    执行查询可以得到上面示例一样的结果。

    3、两种语法选择哪种?

    一般情况下选择搜索函数,即第二种,能够面对更加复杂的查询。

    现在要查询 user 的 age 字段,即客户的年龄,不同的 age 对应的年龄段称呼不同:

    select u.id, u.name, 
    case when u.age <= 18 then '未成年'
    when u.age between 19 and 40 then '青年'
    else '中年' end as '年龄段'
    from user u
    where u.id <= 3
    

    第一种语法无法满足这样复杂的查询,故学习使用搜索函数便可以了。

    自我控制是最强者的本能-萧伯纳
  • 相关阅读:
    读取ClassPath下resource文件的正确姿势
    动画展现十大经典排序算法(附Java代码)
    定量度量程序复杂度的McCabe方法
    从一个例子入门Mysql储存过程
    从源码看Spring Security之采坑笔记(Spring Boot篇)
    函数传递参数的本质
    main函数是必须的吗
    变量存储与长度
    C语言与汇编衔接1
    关于function和task的说明
  • 原文地址:https://www.cnblogs.com/CF1314/p/15740273.html
Copyright © 2011-2022 走看看