系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > 数据库 > Mysql > 详细页面

MySQL流程函数常见用法实例分析

时间:2019-12-29来源:系统城作者:电脑系统城

本文实例讲述了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

 

下面的例子中模拟对职员进行分类,首先创建一个职员薪水表:


 
  1. create table salary(userid int, salary decimal(9,2));
  2.  

插入一些测试数据


 
  1. insert into salary values (1,1000),(2,2000),(3,3000),(4,4000),(5,5000),(1,null);
  2.  

数据如下


 
  1. mysql> select * from salary;
  2. +--------+---------+
  3. | userid | salary |
  4. +--------+---------+
  5. | 1 | 1000.00 |
  6. | 2 | 2000.00 |
  7. | 3 | 3000.00 |
  8. | 4 | 4000.00 |
  9. | 5 | 5000.00 |
  10. | 1 | NULL |
  11. +--------+---------+
  12. 6 rows in set (0.00 sec)
  13.  

接下来, 通过这个表来介绍各个函数的应用.

IF(expr1,expr2,expr3)函数: 这里认为月薪在2000元以上的职员属于高薪, 用"high'表示; 而2000以下的职员属于低薪, 用'low'来表示.


 
  1. mysql> select if(salary>2000, 'high', 'low') from salary;
  2. +--------------------------------+
  3. | if(salary>2000, 'high', 'low') |
  4. +--------------------------------+
  5. | low |
  6. | low |
  7. | high |
  8. | high |
  9. | high |
  10. | low |
  11. +--------------------------------+
  12. 6 rows in set (0.00 sec)
  13.  

IFNULL(expr1,expr2)函数: 这个函数一般用来替换NULL值, 我们知道NULL值是不能参参与数值运算的, 下面这个语句就是把NULL值用0替换.


 
  1. mysql> select ifnull(salary,0) from salary;
  2. +------------------+
  3. | ifnull(salary,0) |
  4. +------------------+
  5. | 1000.00 |
  6. | 2000.00 |
  7. | 3000.00 |
  8. | 4000.00 |
  9. | 5000.00 |
  10. | 0.00 |
  11. +------------------+
  12. 6 rows in set (0.00 sec)
  13.  

CASE WHEN [value1] THEN[result1]… ELSE[default] END函数:这里可以用case when..then函数实现上面例子中高薪低薪的问题.


 
  1. mysql> select CASE WHEN salary<=2000 THEN 'low' else 'high' END from salary;
  2. +---------------------------------------------------+
  3. | CASE WHEN salary<=2000 THEN 'low' else 'high' END |
  4. +---------------------------------------------------+
  5. | low |
  6. | low |
  7. | high |
  8. | high |
  9. | high |
  10. | high |
  11. +---------------------------------------------------+
  12. 6 rows in set (0.00 sec)
  13.  

CASE [expr] WHEN [value1] THEN[result1]… ELSE[default] END函数:这里还可以分为多种情况把职员的薪水分为多个档次,比如下面的例子分成高、中、低3种情况。同样可以分成更多种情况,这里不再举例了,有兴趣的朋友可以自己测试一下


 
  1. mysql> select CASE salary WHEN 1000 THEN 'low' when 2000 THEN 'mid' ELSE 'high' ENDfrom salary;
  2. +-----------------------------------------------------------------------+
  3. | CASE salary WHEN 1000 THEN 'low' when 2000 THEN 'mid' ELSE 'high' END |
  4. +-----------------------------------------------------------------------+
  5. | low |
  6. | mid |
  7. | high |
  8. | high |
  9. | high |
  10. | high |
  11. +-----------------------------------------------------------------------+
  12. 6 rows in set (0.00 sec)
  13.  

更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总》

希望本文所述对大家MySQL数据库计有所帮助。

分享到:

相关信息

  • MySQL的核心查询语句详解

    一、单表查询 1、排序 2、聚合函数 3、分组 4、limit 二、SQL约束 1、主键约束 2、非空约束 3、唯一约束 4、外键约束 5、默认值 三、多表查询 1、内连接 1)隐式内连接: 2)显式内连接: 2、外连接 1)左外连接 2)右外连接 四...

    2023-10-30

  • Mysql中如何删除表重复数据

    Mysql删除表重复数据 表里存在唯一主键 没有主键时删除重复数据 Mysql删除表中重复数据并保留一条 准备一张表 用的是mysql8 大家自行更改 创建表并添加四条相同的数据...

    2023-10-30

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载