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令人咋舌的隐式转换
Apr 05 MySQL
MySQL主从搭建(多主一从)的实现思路与步骤
May 13 MySQL
正确使用MySQL INSERT INTO语句
May 26 MySQL
mysql 如何获取两个集合的交集/差集/并集
Jun 08 MySQL
MySQL 数据恢复的多种方法汇总
Jun 21 MySQL
MySQL开启事务的方式
Jun 26 MySQL
MySQL悲观锁与乐观锁的实现方案
Nov 02 MySQL
浅谈mysql哪些情况会导致索引失效
Nov 20 MySQL
MySQL常见优化方案汇总
Jan 18 MySQL
MySQL创建表操作命令分享
Mar 25 MySQL
MySQL 外连接语法之 OUTER JOIN
Apr 09 MySQL
MySQL分布式恢复进阶
Jul 23 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语法自动检查的Vim插件
2014/08/11 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
php实现通用的信用卡验证类
2015/03/24 PHP
PHP验证码无法显示的原因及解决办法
2017/08/11 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
php读取本地json文件的实例
2018/03/07 PHP
javascript 获取网页参数系统
2008/07/19 Javascript
javascript 基础篇2 数据类型,语句,函数
2012/03/14 Javascript
JS取文本框中最小值的简单实例
2013/11/29 Javascript
javaScript基础语法介绍
2015/02/28 Javascript
jquery通过closest选择器修改上级元素的方法
2015/03/17 Javascript
基于javascript实现图片左右切换效果
2016/01/25 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
Html5 js实现手风琴效果
2020/04/17 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
取消Bootstrap的dropdown-menu点击默认关闭事件方法
2018/08/10 Javascript
详解Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
2019/04/20 Javascript
vue监听浏览器原生返回按钮,进行路由转跳操作
2020/09/09 Javascript
Python中%r和%s的详解及区别
2017/03/16 Python
python3.5 email实现发送邮件功能
2018/05/22 Python
python启动应用程序和终止应用程序的方法
2019/06/28 Python
python读取并写入mat文件的方法
2019/07/12 Python
Django CSRF认证的几种解决方案
2020/03/03 Python
Pytorch 使用CNN图像分类的实现
2020/06/16 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
2020/11/13 Python
10个最常见的HTML5面试题 附答案
2016/06/06 HTML / CSS
优质飞蝇钓和渔具:RiverBum
2020/05/10 全球购物
外贸实习生自荐信范文
2013/11/24 职场文书
函授本科自我鉴定
2014/02/04 职场文书
委托书范文
2014/04/02 职场文书
英语教育专业自荐信
2014/05/29 职场文书
小学班主任培训方案
2014/06/04 职场文书
家长学校培训材料
2014/08/20 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
家长对孩子的寄语
2015/02/26 职场文书
2019通用版导游词范本!
2019/08/07 职场文书