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 相关文章推荐
浅析InnoDB索引结构
Apr 05 MySQL
mysql的MVCC多版本并发控制的实现
Apr 14 MySQL
MySQL连接查询你真的学会了吗?
Jun 02 MySQL
新手入门Mysql--概念
Jun 18 MySQL
Unity连接MySQL并读取表格数据的实现代码
Jun 20 MySQL
MySQL系列之五 视图、存储函数、存储过程、触发器
Jul 02 MySQL
MySQL系列之二 多实例配置
Jul 02 MySQL
解决mysql的int型主键自增问题
Jul 15 MySQL
MySQL分库分表详情
Sep 25 MySQL
MySQL和Oracle批量插入SQL的通用写法示例
Nov 17 MySQL
Mysql事务索引知识汇总
Mar 17 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
php+mysql 实现身份验证代码
2010/03/24 PHP
PHP MVC框架路由学习笔记
2016/03/02 PHP
php获取excel文件数据
2017/04/21 PHP
PHP+iframe模拟Ajax上传文件功能示例
2019/07/02 PHP
Laravel 5.5 异常处理 & 错误日志的解决
2019/10/17 PHP
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
javascript中的toFixed固定小数位数 简单实例分享
2013/07/12 Javascript
javascript实现类似超链接的效果
2014/12/26 Javascript
JavaScript随机生成颜色的方法
2016/10/15 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
2017/01/22 Javascript
ES6新特性之变量和字符串用法示例
2017/04/01 Javascript
es6学习之解构时应该注意的点
2017/08/29 Javascript
jQuery中元素选择器(element)简单用法示例
2018/05/14 jQuery
基于VUE实现的九宫格抽奖功能
2018/09/30 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
H5实现手机拍照和选择上传功能
2019/12/18 Javascript
详解vue-router 动态路由下子页面多页共活的解决方案
2019/12/22 Javascript
jQuery擦除插件eraser使用方法详解
2020/01/11 jQuery
js获取图片的base64编码并压缩
2020/12/05 Javascript
Python中for循环控制语句用法实例
2015/06/02 Python
在类Unix系统上开始Python3编程入门
2015/08/20 Python
Python操作Access数据库基本步骤分析
2016/09/19 Python
浅谈python中的正则表达式(re模块)
2017/10/17 Python
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
Python3调用微信企业号API发送文本消息代码示例
2017/11/10 Python
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
Pycharm+Python工程,引用子模块的实现
2020/03/09 Python
如何通过Python实现RabbitMQ延迟队列
2020/11/28 Python
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
高中的自我鉴定
2013/12/16 职场文书
部门年终奖分配方案
2014/05/07 职场文书
毕业论文指导教师评语
2014/12/30 职场文书
酒店辞职书范文
2015/02/26 职场文书
患者身份识别制度
2015/08/06 职场文书