美文网首页MySQL数据库mysql
Select进阶查询·流程控制函数

Select进阶查询·流程控制函数

作者: 技术老男孩 | 来源:发表于2023-01-24 09:03 被阅读0次

    一、语法格式:

    if语句 语法格式:

    if(条件,v1,v2) 如果条件成立,则返回v1,否则返回v2

    ifnull语句 语法格式:

    ifnull(v1,v2) 如果v1不是空,则返回v1,否则返回v2
    相当于如果v1为空,返回默认值的效果

    case语句 语法格式 (可以有多个判断添加):

    • 如果字段名等于某个值
      则返回对应位置then后面的值 并结束判断
    • 如果与所有值都不相等
      则返回else后面的结果 并结束判断
    语法格式1

    CASE 表头名
    WHEN 值1 THEN 结果
    WHEN 值2 THEN 结果
    WHEN 值3 THEN 结果
    ELSE 结果
    END

    语法格式2

    CASE
    WHEN 判断条件 THEN 结果
    WHEN 判断条件 THEN 结果
    WHEN 判断条件 THEN 结果
    ELSE 结果
    END

    二、使用案例:

    • if()语句
    mysql> select  if(1 = 2 , "a","b");
    +---------------------+
    | if(1 = 2 , "a","b") |
    +---------------------+
    | b                   |
    +---------------------+
    1 row in set (0.00 sec)
    
    • ifnull()语句
    # "abc"不为空 返回"abc"
     mysql> select  ifnull("abc","xxx");
    +---------------------+
    | ifnull("abc","xxx") |
    +---------------------+
    | abc                 |
    +---------------------+
    1 row in set (0.00 sec)
    
    # null为空 返回"xxx"
    mysql> select  ifnull(null,"xxx");
    +--------------------+
    | ifnull(null,"xxx") |
    +--------------------+
    | xxx                |
    +--------------------+
    1 row in set (0.00 sec)
    
    • case语句 语法1
    # 输出部门类型
    select dept_id, dept_name,
    case dept_name
    when '运维部' then '技术部门'
    when '开发部' then '技术部门'
    when '测试部' then '技术部门'
    else '非技术部门'
    end as  部门类型   from  tarena.departments;
    +---------+-----------+--------------+
    | dept_id | dept_name | 部门类型     |
    +---------+-----------+--------------+
    |       1 | 人事部    | 非技术部     |
    |       2 | 财务部    | 非技术部     |
    |       3 | 运维部    | 技术部       |
    |       4 | 开发部    | 技术部       |
    |       5 | 测试部    | 技术部       |
    |       6 | 市场部    | 非技术部     |
    |       7 | 销售部    | 非技术部     |
    |       8 | 法务部    | 非技术部     |
    
    • case语句 语法2
    # 输出部门类型
    mysql> select dept_id,dept_name,
        -> case
        -> when dept_name in ("运维部","开发部","测试部") then "技术部"
        -> else "非技术部"
        -> end as 部门类型  from  tarena.departments;
    +---------+-----------+--------------+
    | dept_id | dept_name | 部门类型     |
    +---------+-----------+--------------+
    |       1 | 人事部    | 非技术部     |
    |       2 | 财务部    | 非技术部     |
    |       3 | 运维部    | 技术部       |
    |       4 | 开发部    | 技术部       |
    |       5 | 测试部    | 技术部       |
    |       6 | 市场部    | 非技术部     |
    |       7 | 销售部    | 非技术部     |
    |       8 | 法务部    | 非技术部     |
    

    相关文章

      网友评论

        本文标题:Select进阶查询·流程控制函数

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