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)
 

转载于:https://www.cnblogs.com/chenqionghe/p/4838412.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL流程控制函数是指可以控制存储过程或函数中执行流程的语句。其中几个常用的流程控制函数包括IF函数。IF函数可以用于条件判断,根据条件返回不同的结果。例如,可以使用IF函数来对查询结果进行处理。在MySQL中,IF函数的语法通常是IF(condition, value1, value2),当condition满足时返回value1,否则返回value2。在使用IF函数时,可以将其类比于三目运算符,即根据条件进行选择返回不同的值。举一个例子,可以使用IF函数来判断eno的值,如果eno与'111'不相等,则返回'yes',否则返回'Yes';如果eno与'112'不相等,则返回2,否则返回3。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MySQL——流程控制函数](https://blog.csdn.net/qq_41596778/article/details/130282443)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [MySQL函数(一)—流程控制函数](https://blog.csdn.net/qy8189/article/details/129045163)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值