MySQL控制流函数(-if ,elseif,else,case...when)

 更新时间:2022年07月06日 09:31:40   作者:王小王_123​​​​​​​  
这篇文章主要介绍了MySQL控制流函数(-if ,elseif,else,case...when),文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下

前言

不管是任何的编程语言,逻辑判断是必不可缺的一个板块;在Python、C、java这些火热的编程语言下,逻辑判断也是编程语言的一个亮点。

IF(expr1,expr2,expr3) 简单逻辑判断

如果第一个条件成立,那么就返回expr2,如果条件不成立,那么就返回expr3

IFNULL(v1,v2) 空值替换

如果 v1 的值不为 NULL,则返回 v1,否则返回 v2。

🍖ISNULL(expression) 空值检测

判断表达式是否为 NULL

如果为空就会返回1,不为空就会返回0,有时候我们用于逻辑判断,或者循环语句的时候可以采用

🍝NULLIF(expr1, expr2) 字符串比较

比较两个字符串,如果字符串 expr1 与 expr2 相等 返回 NULL,否则返回 expr1

 但是在应用型的编程中,第一个还是用的比较的多,那么有的人就会想,有时候我们有多个条件需要比较的,那么这个方法就无法实现了,又该如何去实现呢?

🍛case 函数

CASE expression
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
WHEN conditionN THEN resultN
ELSE result
END

CASE 表示函数开始,END 表示函数结束。如果 condition1 成立,则返回 result1, 如果 condition2 成立,则返回 result2,当全部不成立则返回 result,而当有一个成立之后,后面的就不执行了。

传入一个参数即可,后面我们在写存储过程(函数)的时候,可以充分的应用

这里没有传参,知识按照逻辑判断进行,如果为真那么就会返回结果,如果第一个条件就已经满足了,那么就不会执行后续的判断了

🍤 实操案例

准备数据

-- 创建订单表
create table orders(
oid int primary key, -- 订单id
price double, -- 订单价格
payType int -- 支付类型(1:微信支付 2:支付宝支付 3:银行卡支付 4:其他)
);

insert into orders values(1,1200,1);
insert into orders values(2,1000,2);
insert into orders values(3,200,3);
insert into orders values(4,3000,1);
insert into orders values(5,1500,2);

我们可以通过两种方式的语法来讲我们的支付方式显示出现,因为在业务场景中我们为了保证数据的有效性和保密性,有些数据我们会公司内部的编码实现,那么需要将其展示到老板的眼前的时候,这个时候就需要你来了

7

上述分别是用了等值判断和值的映射去实现,一般我更喜欢使用第一种,因为有时候还可以范围运算

学到这里的小伙伴,可能就会疑问为什么,MySQL编程中如此的单一了,如果你觉得单一,那么你肯定是再想为什么不能实现控制流语句呢?

🍱IF ELSE 做为流程控制语句使用

这个一般和存储过程搭配使用,相对于Python中的函数,存储过程就是函数

IF search_condition THEN
statement_list
[ELSEIF search_condition THEN]
statement_list ...
[ELSE
statement_list]
END IF

与PHP中的IF语句类似,当IF中条件search_condition成立时,执行THEN后的statement_list语句,否则判断ELSEIF中的条件,成立则执行其后的statement_list语句,否则继续判断其他分支。当所有分支的条件均不成立时,执行ELSE分支。search_condition是一个条件表达式,可以由“=、<、<=、>、>=、!=”等条件运算符组成,并且可以使用AND、OR、NOT对多个表达式进行组合。

注意:IF作为一条语句,在END IF后需要加上分号“;”以表示语句结束,其他语句如CASE、LOOP等也是相同的。

例如:

SELECT olddb.STATUS INTO @status_temp FROM olddb.checklist WHERE ID = NEW.ID - 1000000;
IF @status_temp < 5
THEN SET NEW.status = @status_temp +1;
ELSEIF @status_temp = 5
THEN SET NEW.status = 7;
ELSEIF @status_temp = 6
THEN SET NEW.status = 10;
ELSEIF @status_temp = 7
THEN SET NEW.status = 11;
END IF;

到此这篇关于MySQL控制流函数(-if ,elseif,else,case...when)的文章就介绍到这了,更多相关MySQL控制流函数 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL使用游标批量处理进行表操作

    MySQL使用游标批量处理进行表操作

    这篇文章主要介绍了MySQL使用游标批量进行表操作,包括批量添加索引、批量添加字段等,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • MySQL隐式类型的转换陷阱和规则

    MySQL隐式类型的转换陷阱和规则

    这篇文章先是通过一个实例给大家讲述在MySQL隐式类型的转换时遇到的陷阱,而后给大家介绍了MySQL隐式类型的规则,对大家操作mysql隐式类型的时候具有一定的参考借鉴价值,下面来一起看看吧。
    2016-09-09
  • MySQL用limit方式实现分页的实例方法

    MySQL用limit方式实现分页的实例方法

    在本篇文章中小编给大家整理了一篇关于MySQL用limit方式实现分页的实例方法,有需要的朋友们可以参考学习下。
    2020-01-01
  • centos 7系统下编译安装 mysql5.7教程

    centos 7系统下编译安装 mysql5.7教程

    因为Mysql5.7的更新特性还是非常多,所以这篇文章就给大家介绍以下在centos上面编译安装mysql5.7的教程。本文给大家介绍的步骤还是相对来说比较详细的,相信对大家具有一定的参考借鉴价值,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-11-11
  • MySQL中索引与视图的用法与区别详解

    MySQL中索引与视图的用法与区别详解

    索引与视图是我们在日常使用mysql必不可少的一部分,最近在学习中看到一本书中关于这方法写的不错,所以这篇文章主要给大家介绍了关于MySQL中索引与视图的使用与区别的相关资料,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-11-11
  • MySQL的MaxIdleConns不合理,会变成短连接的原因

    MySQL的MaxIdleConns不合理,会变成短连接的原因

    这篇文章主要介绍了MySQL的MaxIdleConns不合理,会变成短连接的原因,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2021-01-01
  • MySQL数据类型优化原则

    MySQL数据类型优化原则

    这篇文章主要介绍了MySQL数据类型优化原则的相关资料,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2020-11-11
  • MySQL中Buffer Pool内存结构详情

    MySQL中Buffer Pool内存结构详情

    这篇文章主要介绍了MySQL中Buffer Pool内存结构详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • 在Mysql存储过程中使用事务实例

    在Mysql存储过程中使用事务实例

    这篇文章主要介绍了在Mysql存储过程中使用事务实例,需要的朋友可以参考下
    2014-04-04
  • windows下安装、卸载mysql服务的方法(mysql 5.6 zip解压版安装教程)

    windows下安装、卸载mysql服务的方法(mysql 5.6 zip解压版安装教程)

    这篇文章主要介绍了windows下安装、卸载mysql服务的方法(zip解压版安装),需要的朋友可以参考下
    2016-06-06

最新评论