• MySQL学习笔记:流程控制函数if、case用法


    /*
    5、流程控制函数
    if(expr1,a,b)  # 如果expr1为true,结果返回a,否则返回b
    case()
    */
    
    -- select if (10<5,'大','小');
    # if
    # 查询是否有奖金
    -- use myemployees;
    -- select last_name,commission_pct,if(commission_pct is not null,'有奖金','无奖金') as ps from employees;
    -- select last_name,commission_pct,if(commission_pct,'有奖金','无奖金') as ps from employees;   # 等同于上列语句
    -- 
    /*
    case: 功能1:switch case效果:常用于处理等值判断
    语法:
    case 表达式/字段
    when 常量1 then 要显示的值1或者语句1(与select联合使用不能用语句);
    when 常量2 then 要显示的值2或者语句2(与select联合使用不能用语句);
    ...
    else 要显示的值n或者语句n;
    end
    
    备注: 从case开始到end结束相当于一个表达式,可以起别名,然后与select联合使用
    */
    
    /* 案例
    查询员工的工资,
    如果部门号为30,显示工资为1.1倍;
    如果部门号为40,显示工资为1.2倍;
    如果部门号为50,显示工资为1.3倍;
    其他,原工资;
    */
    select department_id,salary,    # 注意salary后面的,不能少
    (case department_id       # 加()是为了体现case...end可以看作一个表达式,不加()也可以
    when 30 then salary*1.1   # then后面是值,不需要加;
    when 40 then salary*1.2
    when 50 then salary*1.3
    else salary
    end) as 新工资 
    from employees;
    
    
    /*
    case: 功能2:多重if : 区间判断
    语法:
    case
    when 条件1 then 值1或语句1; #语句才加;
    when 条件2 then 值2或语句2; 
    when 条件3 then 值3或语句3; 
    else 要显示的值n或语句n; 
    end
    
    备注: 从case开始到end结束相当于一个表达式,可以起别名,然后与select联合使用
    */
    
    /* 案例:
    查询员工的工资情况
    如果工资>20000;显示A级别;
    如果工资>15000;显示B级别;
    如果工资>10000;显示C级别;
    其他,显示D级别;
    */
    select last_name,salary,
    case 
    when salary>20000 then 'A'
    when salary>15000 then 'B'
    when salary>10000 then 'C'
    else 'D'
    end as 工资级别
    from employees;
  • 相关阅读:
    [LeetCode]Add Two Numbers
    [LeetCode]Longest SubString Without Repeating Characters
    [LeetCode]Median of Two Sorted Arrays
    [LeetCode]Two Sum
    动态规划
    [shell编程]一个简单的脚本
    一些linux的问题
    核稀疏表示分类(KSRC)
    conda 按照指定源下载python包
    python 保留两位小数
  • 原文地址:https://www.cnblogs.com/feynmania/p/14785756.html
Copyright © 2020-2023  润新知