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

吾爱主题 阅读:230 2024-04-05 16:19:29 评论:0

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

插入一些测试数据

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

数据如下

?
1 2 3 4 5 6 7 8 9 10 11 12 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'来表示.

?
1 2 3 4 5 6 7 8 9 10 11 12 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替换.

?
1 2 3 4 5 6 7 8 9 10 11 12 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函数实现上面例子中高薪低薪的问题.

?
1 2 3 4 5 6 7 8 9 10 11 12 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种情况。同样可以分成更多种情况,这里不再举例了,有兴趣的朋友可以自己测试一下

?
1 2 3 4 5 6 7 8 9 10 11 12 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)

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

原文链接:https://www.cnblogs.com/chenqionghe/p/4838412.html

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容