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 29 MySQL
Mysql服务添加 iptables防火墙策略的方案
Apr 29 MySQL
mysql 8.0.24 安装配置方法图文教程
May 12 MySQL
MySQL 8.0 之不可见列的基本操作
May 20 MySQL
详细谈谈MYSQL中的COLLATE是什么
Jun 11 MySQL
mysql联合索引的使用规则
Jun 23 MySQL
SQL实现LeetCode(197.上升温度)
Aug 07 MySQL
如何避免mysql启动时错误及sock文件作用分析
Jan 22 MySQL
以MySQL5.7为例了解一下执行计划
Apr 13 MySQL
MySQL视图概念以及相关应用
Apr 19 MySQL
mysql 获取相邻数据项
May 11 MySQL
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
Jun 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
JSON在PHP中的应用介绍
2012/09/08 PHP
详细解读PHP中接口的应用
2015/08/12 PHP
PHP 中提示undefined index如何解决(多种方法)
2016/03/16 PHP
jquery 屏蔽一个区域内的所有元素,禁止输入
2009/10/22 Javascript
jquery的ajax从纯真网(cz88.net)获取IP地址对应地区名
2009/12/02 Javascript
jQuery 获取URL参数的插件
2010/03/04 Javascript
js计算精度问题小结
2013/04/22 Javascript
JavaScript获取伪元素(Pseudo-Element)属性的方法技巧
2015/03/13 Javascript
jquery实现带缩略图的可定制高度画廊效果(5种)
2015/08/28 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
2015/10/26 Javascript
js实现点击获取验证码倒计时效果
2021/01/28 Javascript
jQuery 跨域访问解决原理案例详解
2016/07/09 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
AngularJS删除路由中的#符号的方法
2016/09/20 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
Node.Js中实现端口重用原理详解
2018/05/03 Javascript
微信小程序排坑指南详解
2018/05/23 Javascript
微信小程序实现漂亮的弹窗效果
2020/05/26 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
angularjs性能优化的方法
2018/09/05 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
2019/03/16 Javascript
详解Django框架中用context来解析模板的方法
2015/07/20 Python
Python算术运算符实例详解
2017/05/31 Python
Python网络编程之TCP与UDP协议套接字用法示例
2018/02/02 Python
Python 面试中 8 个必考问题
2018/11/16 Python
Python中dict和set的用法讲解
2019/03/28 Python
python实现websocket的客户端压力测试
2019/06/25 Python
python实现的config文件读写功能示例
2019/09/24 Python
python 基于dlib库的人脸检测的实现
2019/11/08 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
德国家具在线:Fashion For Home
2017/03/11 全球购物
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
介绍一下常见的木马种类
2014/11/15 面试题
爱心捐助活动总结
2015/05/09 职场文书
2015年行风建设工作总结
2015/05/15 职场文书