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数据库压缩版本安装与配置详细教程
May 21 MySQL
Mysql官方性能测试工具mysqlslap的使用简介
May 21 MySQL
MySQL中InnoDB存储引擎的锁的基本使用教程
May 26 MySQL
分析mysql中一条SQL查询语句是如何执行的
Jun 21 MySQL
MySQL中连接查询和子查询的问题
Sep 04 MySQL
解决Mysql多行子查询的使用及空值问题
Jan 22 MySQL
MYSQL如何查看进程和kill进程
Mar 13 MySQL
MySQL 主从复制数据不一致的解决方法
Mar 18 MySQL
MySQL限制查询和数据排序介绍
Mar 25 MySQL
MySQL数据库查询进阶之多表查询详解
Apr 08 MySQL
mysql全面解析json/数组
Jul 07 MySQL
Mysql中mvcc各场景理解应用
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使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
php利用gd库为图片添加水印
2016/11/09 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
2017/05/02 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
JavaScript 学习点滴记录
2009/04/24 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
js setTimeout 参数传递使用介绍
2013/08/13 Javascript
jquery数据验证插件(自制,简单,练手)实例代码
2013/10/24 Javascript
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
JS实现简单的顶部定时关闭层效果
2014/06/15 Javascript
Javascript Objects详解
2014/09/04 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
jquery.gridrotator实现响应式图片展示画廊效果
2015/06/23 Javascript
jQuery实现form表单元素序列化为json对象的方法
2015/12/09 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
2017/01/26 Javascript
Node.js中流(stream)的使用方法示例
2017/07/16 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
2017/09/12 Javascript
vue如何实现自定义底部菜单栏
2019/07/01 Javascript
[02:12]DOTA2英雄基础教程 变体精灵
2013/12/16 DOTA
Python判断直线和矩形是否相交的方法
2015/07/14 Python
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
Python生成随机密码的方法
2017/06/16 Python
Python yield与实现方法代码分析
2018/02/06 Python
python 读取dicom文件,生成info.txt和raw文件的方法
2019/01/24 Python
python同步两个文件夹下的内容
2019/08/29 Python
如何在python中实现随机选择
2019/11/02 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
浅谈Python程序的错误:变量未定义
2020/06/02 Python
python GUI模拟实现计算器
2020/06/22 Python
python中的时区问题
2021/01/14 Python
新西兰床上用品和家居用品购物网站:Adairs
2018/04/27 全球购物
华为慧通面试题
2012/09/11 面试题
户外活动总结范文
2014/04/30 职场文书
2014年宣传工作总结
2014/11/18 职场文书
Python 键盘事件详解
2021/11/11 Python
如何在python中实现ECDSA你知道吗
2021/11/23 Python