MySql存储过程之逻辑判断和条件控制


Posted in MySQL onMay 26, 2021

具体详情请看下文小编给大家带来的知识点。

同编写程序类似,存储过程中也有对应的条件判断,功能类似于if、switch。在MySql里面对应的是IF和CASE

1、IF判断

IF判断的格式是这样的:

IF expression THEN commands 
  [ELSEIF expression THEN commands] 
  [ELSE commands] 
  END IF;

这里expression是我们的判断表达式;ELSE IF 和ELSE都是可选的;command就是当条件为真(true为1,false为0)时执行的命令。比如我们设计一个存储过程用于返回商品的价格,这里价格通过传入的参数来判断是要带税收的价格还是没有带税收的价格。先看看表的数据:

MySql存储过程之逻辑判断和条件控制

然后下面是我们的存储过程:

MySql存储过程之逻辑判断和条件控制

存储过程的话有两个输入参数,第一个isTaxed表示是不是要带税价格,第二个是产品的名称;在存储过程里面定义了两个变量,finalPrice用来保存价格,而taxRate表示税率。这里代码比较简单,就是判断下如果是要加税,就把原来的价格乘上税率。下面是测试结果:

MySql存储过程之逻辑判断和条件控制

MySql存储过程之逻辑判断和条件控制

true的情况表示是带税的价格。好了这个是使用IF的一个例子,下面看看CASE;

2、CASE的使用

同编程里面的那个switch ....case.....类似,使用CASE同编程一样也是当判断比较多时便于阅读和维护,我们也来看下CASE的语法:

CASE case_expression 
  WHEN when_expression THEN commands 
  WHEN when_expression THEN commands 
  ... 
  ELSE commands 
END CASE;

  a、这里可以看到CASE好比我们编程里面的那个switch,后面的case_expression就好比switch后面跟着的表达式;

  b、然后WHEN则类似编程里面的case,when_expression类似case后面跟着的值,commands则对应于相应的case下执行的命令;

 c、最后一个 ELSE 则类似于default,就是如果都没在上面那些WHEN里面的情况时执行的命令。


下面我们假设不同类型的商品对应的税收税率是不一样的情况来看个例子,这里假设甜点的税率是0.05,奶制品的是0.1,家具类的是0.2:,下面是存储过程:

MySql存储过程之逻辑判断和条件控制

上面增加了一个保存产品类型的一个变量proType,用来保存商品类型。然后使用CASE来进行判断来设置税率,下面是测试的部分:

可以看到沙发的价格是1250*1.2=1500,而蛋糕的价格是10*1.05 = 10.5

MySql存储过程之逻辑判断和条件控制

MySql存储过程之逻辑判断和条件控制

MySQL 相关文章推荐
MySQL查询学习之基础查询操作
May 08 MySQL
详解MySQL 联合查询优化机制
May 10 MySQL
MySQL 逻辑备份与恢复测试的相关总结
May 14 MySQL
修改MySQL的默认密码的四种小方法
May 26 MySQL
MySQL Router实现MySQL的读写分离的方法
May 27 MySQL
MySQL图形化管理工具Navicat安装步骤
Dec 04 MySQL
SQL注入篇学习之盲注/宽字节注入
Mar 03 MySQL
MySQL创建管理RANGE分区
Apr 13 MySQL
pt-archiver 主键自增
Apr 26 MySQL
Mysql中常用的join连接方式
May 11 MySQL
MySQL 自动填充 create_time 和 update_time
May 20 MySQL
MySQL的表级锁,行级锁,排它锁和共享锁
Jul 15 MySQL
MYSQL主从数据库同步备份配置的方法
May 26 #MySQL
MYSQL数据库使用UTF-8中文编码乱码的解决办法
May 26 #MySQL
Mysql效率优化定位较低sql的两种方式
May 26 #MySQL
Mysql中 unique列插入重复值该怎么解决呢
May 26 #MySQL
MySQL查看表和清空表的常用命令总结
May 26 #MySQL
MySQL中distinct与group by之间的性能进行比较
MySQL中distinct和count(*)的使用方法比较
May 26 #MySQL
You might like
Get或Post提交值的非法数据处理
2006/10/09 PHP
网站当前的在线人数
2006/10/09 PHP
基于PHP开发中的安全防范知识详解
2013/06/06 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
PHP命名空间(namespace)原理与用法详解
2019/12/11 PHP
js中判断文本框是否为空的两种方法
2011/07/31 Javascript
网页打开自动最大化的js代码
2012/08/22 Javascript
基于jquery实现等比缩放图片
2014/12/03 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
JavaScript 对象深入学习总结(经典)
2015/09/29 Javascript
基于Node.js实现nodemailer邮件发送
2016/01/26 Javascript
js定义类的几种方法(推荐)
2016/06/08 Javascript
plupload+artdialog实现多平台上传文件
2016/07/19 Javascript
Angularjs中$http以post请求通过消息体传递参数的实现方法
2016/08/05 Javascript
Vuejs中使用markdown服务器端渲染的示例
2017/11/22 Javascript
vue中路由参数传递可能会遇到的坑
2017/12/07 Javascript
Vue引入jquery实现平滑滚动到指定位置
2018/05/09 jQuery
LayUI switch 开关监听 获取属性值、更改状态的方法
2019/09/21 Javascript
Vue使用Three.js加载glTF模型的方法详解
2020/06/14 Javascript
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
python生成ppt的方法
2018/06/07 Python
Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】
2018/12/05 Python
python3-flask-3将信息写入日志的实操方法
2019/11/12 Python
Python中的四种交换数值的方法解析
2019/11/18 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
2020/04/22 Python
python判断变量是否为列表的方法
2020/09/17 Python
Ralph Lauren拉夫·劳伦美国官网:带有浓郁美国气息的高品味时装品牌
2017/11/01 全球购物
大学毕业感言100字
2014/02/03 职场文书
外贸员简历中的自我评价
2014/03/04 职场文书
《搭石》教学反思
2014/04/07 职场文书
常务副县长“四风”个人对照检查材料思想汇报
2014/10/02 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android
MySQL时区造成时差问题
2022/04/13 MySQL
Python FuzzyWuzzy实现模糊匹配
2022/04/28 Python
win sever 2022如何占用操作主机角色
2022/06/25 Servers