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 Show Profile
Apr 05 MySQL
MySQL获取所有分类的前N条记录
May 07 MySQL
一篇文章弄懂MySQL查询语句的执行过程
May 07 MySQL
Navicat for MySQL的使用教程详解
May 27 MySQL
MySQL如何使用使用Xtrabackup进行备份和恢复
Jun 21 MySQL
通过shell脚本对mysql的增删改查及my.cnf的配置
Jul 07 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
Jul 25 MySQL
MySQL里面的子查询的基本使用
Aug 02 MySQL
浅谈mysql哪些情况会导致索引失效
Nov 20 MySQL
MySQL 外连接语法之 OUTER JOIN
Apr 09 MySQL
MySQL创建管理子分区
Apr 13 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
PHP设置图片文件上传大小的具体实现方法
2013/10/11 PHP
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
PHP自定义函数获取URL中一级域名的方法
2016/08/23 PHP
JavaScript实用技巧(一)
2010/08/16 Javascript
javaScript 删除字符串空格多种方法小结
2012/10/24 Javascript
关于eval 与new Function 到底该选哪个?
2013/04/17 Javascript
AngularJS学习笔记之ng-options指令
2015/06/16 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
2016/01/28 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
2016/04/17 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
Vue的路由动态重定向和导航守卫实例
2018/03/17 Javascript
Angular5中调用第三方库及jQuery的添加的方法
2018/06/07 jQuery
Angular resolve基础用法详解
2018/10/03 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
Vue 嵌套路由使用总结(推荐)
2020/01/13 Javascript
JavaScript实现网页计算器功能
2020/10/29 Javascript
python通过ftplib登录到ftp服务器的方法
2015/05/08 Python
谈谈如何手动释放Python的内存
2016/12/17 Python
python实现任意位置文件分割的实例
2018/12/14 Python
python 实现视频流下载保存MP4的方法
2019/01/09 Python
Python使用sklearn库实现的各种分类算法简单应用小结
2019/07/04 Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
2019/07/31 Python
一行Python代码过滤标点符号等特殊字符
2019/08/12 Python
python自动发微信监控报警
2019/09/06 Python
Pandas 缺失数据处理的实现
2019/11/04 Python
Pytest单元测试框架如何实现参数化
2020/09/05 Python
python产生模拟数据faker库的使用详解
2020/11/04 Python
浅析CSS3 用text-overflow解决文字排版问题
2020/10/28 HTML / CSS
zooplus波兰:在线宠物店
2019/07/21 全球购物
意大利在线高尔夫商店:Online Golf
2021/03/09 全球购物
品管员岗位职责
2013/11/10 职场文书
体育教师自我鉴定
2014/02/12 职场文书
入党积极分子党支部意见
2015/06/02 职场文书
怎样写观后感
2015/06/19 职场文书
Java使用JMeter进行高并发测试
2021/11/23 Java/Android