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
MySQL8.0.24版本Release Note的一些改进点
Apr 22 MySQL
my.ini优化mysql数据库性能的十个参数(推荐)
May 26 MySQL
MySQL的安装与配置详细教程
Jun 26 MySQL
JMeter对MySQL数据库进行压力测试的实现步骤
Jan 22 MySQL
Mysql忘记密码解决方法
Feb 12 MySQL
将MySQL的表数据全量导入clichhouse库中
Mar 21 MySQL
MySQL分区以及建索引的方法总结
Apr 13 MySQL
在MySQL中你成功的避开了所有索引
Apr 20 MySQL
mysql 子查询的使用
Apr 28 MySQL
MySql中的json_extract函数处理json字段详情
Jun 05 MySQL
MySQL数据库查询之多表查询总结
Aug 05 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实现让页面只能被百度gogole蜘蛛访问的方法
2009/12/29 PHP
PHP fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
2014/09/10 PHP
使用PHP实现阻止用户上传成人照片或者裸照
2014/12/25 PHP
关于图片验证码设计的思考
2007/01/29 Javascript
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
THREE.JS入门教程(5)你应当知道的十件事
2013/01/24 Javascript
浅谈toLowerCase和toLocaleLowerCase的区别
2016/08/15 Javascript
javascript 动态脚本添加的简单方法
2016/10/11 Javascript
JS中实现函数return多个返回值的实例
2017/02/21 Javascript
深入理解JavaScript 中的匿名函数((function() {})();)与变量的作用域
2018/08/28 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
Vuex 单状态库与多模块状态库详解
2018/12/11 Javascript
JS实现判断有效的数独算法示例
2019/02/25 Javascript
ES6入门教程之let、const的使用方法
2019/04/13 Javascript
配置一个vue3.0项目的完整步骤
2019/04/26 Javascript
生产制造追溯系统之再说条码打印
2019/06/03 Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
2020/07/28 Javascript
python人人网登录应用实例
2014/09/26 Python
使用Python实现一个简单的项目监控
2015/03/31 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
2016/12/23 Python
Python3中的f-Strings增强版字符串格式化方法
2020/03/04 Python
Django多数据库配置及逆向生成model教程
2020/03/28 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
如何利用python进行时间序列分析
2020/08/04 Python
医学专业毕业生个人求职信
2013/12/25 职场文书
酒店保安领班职务说明书
2014/03/04 职场文书
工程承诺书怎么写
2014/05/24 职场文书
优秀毕业生找工作自荐信
2014/06/23 职场文书
委托书如何写
2014/08/30 职场文书
小学生运动会报道稿
2014/09/12 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
公安干警正风肃纪心得体会
2016/01/15 职场文书
2016年庆祝六一儿童节活动总结
2016/04/06 职场文书
Go 在 MongoDB 中常用查询与修改的操作
2021/05/07 Golang
详解CSS3浏览器兼容
2022/12/24 HTML / CSS