• MySQL流程函数


    流程函数是MySQL相对常用的一类函数, 用户可以使用这类函数在一个SQL语句中实现条件选择, 这样能够提高效率.

    下面列出了MySQL跟条件有关的流程函数
    函数 功能
    IF(expr1,expr2,expr3) 如果expr1是真, 返回expr2, 否则返回expr3
    IFNULL(expr1,expr2) 如果expr1不是NULL,返回expr1,否则返回expr2
    CASE WHEN [value1] THEN[result1]… ELSE[default] END 如果value是真, 返回result1,否则返回default
    CASE [expr] WHEN [value1] THEN[result1]… ELSE[default] END 如果expr等于value1, 返回result1,否则返回default
    下面的例子中模拟对职员进行分类,首先创建一个职员薪水表:
    create table salary(userid int, salary decimal(9,2));
    
    插入一些测试数据
    insert into salary values (1,1000),(2,2000),(3,3000),(4,4000),(5,5000),(1,null);
    
    数据如下
    mysql> select * from salary;
    +--------+---------+
    | userid | salary |
    +--------+---------+
    | 1 | 1000.00 |
    | 2 | 2000.00 |
    | 3 | 3000.00 |
    | 4 | 4000.00 |
    | 5 | 5000.00 |
    | 1 | NULL |
    +--------+---------+
    6 rows in set (0.00 sec)
    
    接下来, 通过这个表来介绍各个函数的应用.
    IF(expr1,expr2,expr3)函数: 这里认为月薪在2000元以上的职员属于高薪, 用"high'表示; 而2000以下的职员属于低薪, 用'low'来表示.
    mysql> select if(salary>2000, 'high', 'low') from salary;        
    +--------------------------------+
    | if(salary>2000, 'high', 'low') |
    +--------------------------------+
    | low                            |
    | low                            |
    | high                           |
    | high                           |
    | high                           |
    | low                            |
    +--------------------------------+
    6 rows in set (0.00 sec)
    
    IFNULL(expr1,expr2)函数: 这个函数一般用来替换NULL值, 我们知道NULL值是不能参参与数值运算的, 下面这个语句就是把NULL值用0替换.
    mysql> select ifnull(salary,0) from salary;
    +------------------+
    | ifnull(salary,0) |
    +------------------+
    |          1000.00 |
    |          2000.00 |
    |          3000.00 |
    |          4000.00 |
    |          5000.00 |
    |             0.00 |
    +------------------+
    6 rows in set (0.00 sec)
    
    CASE WHEN [value1] THEN[result1]… ELSE[default] END函数:这里可以用case when..then函数实现上面例子中高薪低薪的问题.
    mysql> select CASE WHEN salary<=2000 THEN 'low' else 'high' END  from salary;
    +---------------------------------------------------+
    | CASE WHEN salary<=2000 THEN 'low' else 'high' END |
    +---------------------------------------------------+
    | low                                               |
    | low                                               |
    | high                                              |
    | high                                              |
    | high                                              |
    | high                                              |
    +---------------------------------------------------+
    6 rows in set (0.00 sec)
    
    CASE [expr] WHEN [value1] THEN[result1]… ELSE[default] END函数:这里还可以分为多种情况把职员的薪水分为多个档次,比如下面的例子分成高、中、低3种情况。同样可以分成更多种情况,这里不再举例了,有兴趣的朋友可以自己测试一下
    mysql> select CASE salary WHEN 1000 THEN 'low' when 2000 THEN 'mid' ELSE 'high' END from salary;
    +-----------------------------------------------------------------------+
    | CASE salary WHEN 1000 THEN 'low' when 2000 THEN 'mid' ELSE 'high' END |
    +-----------------------------------------------------------------------+
    | low                                                                   |
    | mid                                                                   |
    | high                                                                  |
    | high                                                                  |
    | high                                                                  |
    | high                                                                  |
    +-----------------------------------------------------------------------+
    6 rows in set (0.00 sec)
    
     
  • 相关阅读:
    linux-CPU和核概念
    Nginx学习——location+proxy_pass左斜杠问题彻底弄清
    es概念一句话简介和注意点
    es-字段类型整理(6.x及以上)
    Nginx学习——location和rewrite
    Nginx学习——proxy_pass
    Nginx学习——简介及常用命令
    第三方接口调用异常补偿机制实现实例记录
    postgres日志爆盘处理方案-转自DBA汪x
    Xshell连接本地 Virtualbo Ubuntu
  • 原文地址:https://www.cnblogs.com/chenqionghe/p/4838412.html
Copyright © 2020-2023  润新知