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 相关文章推荐
left join、inner join、right join的区别
Apr 05 MySQL
浅谈MySQL 亿级数据分页的优化
Jun 15 MySQL
MySQL 亿级数据导入导出及迁移笔记
Jun 18 MySQL
MySQL query_cache_type 参数与使用详解
Jul 01 MySQL
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
Jul 01 MySQL
面试被问select......for update会锁表还是锁行
Nov 11 MySQL
如何避免mysql启动时错误及sock文件作用分析
Jan 22 MySQL
MySQL 开窗函数
Feb 15 MySQL
MySQL读取JSON转换的方式
Mar 18 MySQL
Golang连接并操作MySQL
Apr 14 MySQL
mysql实现将字符串字段转为数字排序或比大小
Jun 14 MySQL
MySQL 原理与优化之Update 优化
Aug 14 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像数组一样存取和修改字符串字符
2014/03/21 PHP
php实现的单一入口应用程序实例分析
2015/09/23 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
2015/12/18 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
Swoole4.4协程抢占式调度器详解
2019/05/23 PHP
一个支持任意尺寸的图片上下左右滑动效果
2014/08/24 Javascript
JS基于clipBoard.js插件实现剪切、复制、粘贴
2016/05/03 Javascript
JavaScript知识点总结(十)之this关键字
2016/05/31 Javascript
浅谈js中子页面父页面方法 变量相互调用
2016/08/04 Javascript
js中scrollTop()方法和scroll()方法用法示例
2016/10/03 Javascript
webpack打包单页面如何引用的js
2017/06/07 Javascript
JavaScript中Hoisting详解 (变量提升与函数声明提升)
2017/08/18 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
2017/12/14 Javascript
vue中的自定义分页插件组件的示例
2018/08/18 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
2019/05/30 Javascript
JQuery复选框全选效果如何实现
2020/05/08 jQuery
Vue 请求传公共参数的操作
2020/07/31 Javascript
[02:34]2016完美“圣”典风云人物:BurNIng专访
2016/12/10 DOTA
[01:11:21]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第三场 3月7日
2021/03/11 DOTA
python 列表,数组,矩阵两两转换tolist()的实例
2018/04/04 Python
python通过paramiko复制远程文件及文件目录到本地
2019/04/30 Python
PyTorch中permute的用法详解
2019/12/30 Python
Tensorflow 实现释放内存
2020/02/03 Python
virtualenv介绍及简明教程
2020/06/23 Python
拿来就用!Python批量合并PDF的示例代码
2020/08/10 Python
韩国演唱会订票网站:StubHub韩国
2019/01/17 全球购物
信用社实习人员自我鉴定
2013/09/20 职场文书
个人对照检查材料
2014/02/12 职场文书
高中生学期学习自我评价
2014/02/24 职场文书
大学生求职信例文
2014/06/29 职场文书
镇人大副主席民主生活会对照检查材料思想汇报
2014/10/01 职场文书
2014年医务科工作总结
2014/12/18 职场文书
故宫英文导游词
2015/01/31 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
李清照的诗词赏析(20首)
2019/08/22 职场文书