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中使用or、in与union all在查询命令下的效率对比
May 26 MySQL
MySQL中in和exists区别详解
Jun 03 MySQL
浅谈mysql返回Boolean类型的几种情况
Jun 04 MySQL
mysql连接查询中and与where的区别浅析
Jul 01 MySQL
SQL实现LeetCode(177.第N高薪水)
Aug 04 MySQL
MySQL七大JOIN的具体使用
Feb 28 MySQL
Linux系统下MySQL配置主从分离的步骤
Mar 21 MySQL
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
Mar 23 MySQL
MySQL数据库中的锁、解锁以及删除事务
May 06 MySQL
MySQL批量更新不同表中的数据
May 11 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/03 冲泡冲煮
[FAQ]PHP中的一些常识:类篇
2006/10/09 PHP
PHP验证码类代码( 最新修改,完全定制化! )
2010/12/02 PHP
php从数组中随机选择若干不重复元素的方法
2015/03/14 PHP
PHP 前加at符合@的作用解析
2015/07/31 PHP
PHP通过反射动态加载第三方类和获得类源码的实例
2015/11/27 PHP
Draggable Elements 元素拖拽功能实现代码
2011/03/30 Javascript
文件编码导致jquery失效的解决方法
2013/06/26 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
2013/12/16 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
jQuery实现自动与手动切换的滚动新闻特效代码分享
2015/08/27 Javascript
详解jquery easyui之datagrid使用参考
2016/12/05 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
JavaScript内置对象之Array的使用小结
2020/05/12 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
[01:26]神话结束了,却也刚刚开始——DOTA2新英雄玛尔斯驾临战场
2019/03/10 DOTA
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
2017/08/25 Python
Python实现螺旋矩阵的填充算法示例
2017/12/28 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
8种用Python实现线性回归的方法对比详解
2019/07/10 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
2019/08/17 Python
Python TKinter如何自动关闭主窗口
2020/02/26 Python
python获取系统内存占用信息的实例方法
2020/07/17 Python
生物制药毕业生自荐信
2013/10/16 职场文书
最受欢迎的自我评价
2013/12/22 职场文书
逃课上网检讨书
2014/02/20 职场文书
社团活动总结书
2014/06/27 职场文书
教师党的群众路线教育实践活动个人整改措施
2014/11/04 职场文书
写给父母的感谢信
2015/01/22 职场文书
2015年大学学生会工作总结
2015/05/13 职场文书
大学学生会主席竞选稿
2015/11/19 职场文书
三年级作文之趣事作文
2019/11/04 职场文书
微信小程序基础教程之echart的使用
2021/06/01 Javascript
mysql 如何获取两个集合的交集/差集/并集
2021/06/08 MySQL
Netty分布式客户端接入流程初始化源码分析
2022/03/25 Java/Android