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


Posted in MySQL onJuly 07, 2022

前言

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

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

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

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

IFNULL(v1,v2) 空值替换

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

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

?ISNULL(expression) 空值检测

判断表达式是否为 NULL

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

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

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

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

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

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

?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,而当有一个成立之后,后面的就不执行了。

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

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

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

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

? 实操案例

准备数据

-- 创建订单表
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);

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

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

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

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

学到这里的小伙伴,可能就会疑问为什么,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控制流函数 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!


Tags in this post...

MySQL 相关文章推荐
MySQL基础(一)
Apr 05 MySQL
详解MySQL主从复制及读写分离
May 07 MySQL
MySQL表字段时间设置默认值
May 13 MySQL
MySQL删除和插入数据很慢的问题解决
Jun 03 MySQL
浅谈MySQL 亿级数据分页的优化
Jun 15 MySQL
新手入门Mysql--概念
Jun 18 MySQL
MySQL命令无法输入中文问题的解决方式
Aug 30 MySQL
MySQL连接控制插件介绍
Sep 25 MySQL
详解MySql中InnoDB存储引擎中的各种锁
Feb 12 MySQL
一文了解MYSQL三大范式和表约束
Apr 03 MySQL
详细介绍MySQL中limit和offset的用法
May 06 MySQL
关于mysql中string和number的转换问题
Jun 14 MySQL
mysql拆分字符串作为查询条件的示例代码
Jul 07 #MySQL
mysql全面解析json/数组
Jul 07 #MySQL
Mysql表数据比较大情况下修改添加字段的方法实例
MySQL外键约束(Foreign Key)案例详解
Jun 28 #MySQL
MySQL主从切换的超详细步骤
Jun 28 #MySQL
浅谈MySql update会锁定哪些范围的数据
Jun 25 #MySQL
MySQL导致索引失效的几种情况
Jun 25 #MySQL
You might like
用 Composer构建自己的 PHP 框架之构建路由
2014/10/30 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
2020/03/03 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
JS弹出窗口代码大全(详细整理)
2012/12/21 Javascript
jquery 提交值不为空的元素示例代码
2013/05/10 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
node.js入门教程迷你书、node.js入门web应用开发完全示例
2014/04/06 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
2015/02/05 Javascript
text-align:justify实现文本两端对齐 兼容IE
2015/08/19 Javascript
jQuery实现的超链接提示效果示例【附demo源码下载】
2016/09/09 Javascript
利用vueJs实现图片轮播实例代码
2017/06/03 Javascript
javascript兼容性(实例讲解)
2017/08/15 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
2017/09/19 Javascript
Vue实现侧边菜单栏手风琴效果实例代码
2018/05/31 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
详解基于webpack&amp;gettext的前端多语言方案
2019/01/29 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
2019/04/24 Javascript
使用layer弹窗,制作编辑User信息页面的方法
2019/09/27 Javascript
JS实现网页时钟特效
2020/03/25 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
Vue实现一种简单的无限循环滚动动画的示例
2021/01/10 Vue.js
Python multiprocessing模块中的Pipe管道使用实例
2015/04/11 Python
python简单实现旋转图片的方法
2015/05/30 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
2017/03/20 Python
python使用tkinter实现简单计算器
2018/01/30 Python
一篇文章读懂Python赋值与拷贝
2018/04/19 Python
对Python 3.5拼接列表的新语法详解
2018/11/08 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
2020/04/13 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
香蕉共和国Banana Republic官网:美国GAP旗下偏贵族风格服饰品牌
2016/11/21 全球购物
写好自荐信要注意的问题
2013/11/10 职场文书
工作态度不好检讨书
2015/05/06 职场文书
7个你应该知道的JS原生错误类型
2021/04/29 Javascript
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
2021/05/25 Python
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL
用Python仅20行代码编写一个简单的端口扫描器
2022/04/08 Python