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 06 MySQL
详解MySQL的Seconds_Behind_Master
May 18 MySQL
Mysql官方性能测试工具mysqlslap的使用简介
May 21 MySQL
MySQL如何使用使用Xtrabackup进行备份和恢复
Jun 21 MySQL
MySQL系列之一 MariaDB-server安装
Jul 02 MySQL
MySQL令人大跌眼镜的隐式转换
Aug 23 MySQL
防止web项目中的SQL注入
Dec 06 MySQL
mysql使用instr达到in(字符串)的效果
Apr 03 MySQL
MySQL 执行数据库更新update操作的时候数据库卡死了
May 02 MySQL
mysql实现将字符串字段转为数字排序或比大小
Jun 14 MySQL
MySQL约束(创建表时的各种条件说明)
Jun 21 MySQL
MySQL的表级锁,行级锁,排它锁和共享锁
Jul 15 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 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
2006/10/09 PHP
PHP备份/还原MySQL数据库的代码
2011/01/06 PHP
php下通过IP获取地理位置的代码(小偷程序)
2011/06/09 PHP
采用thinkphp自带方法生成静态html文件详解
2014/06/13 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
2016/01/09 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
使用Laravel中的查询构造器实现增删改查功能
2019/09/03 PHP
基于jQuery的Tab选项框效果代码(插件)
2011/03/01 Javascript
javascript获取选中的文本的方法代码
2013/10/30 Javascript
setinterval()与clearInterval()JS函数的调用方法
2015/01/21 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
2015/06/09 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
2015/09/20 Javascript
SWFUpload多文件上传及文件个数限制的方法
2016/05/31 Javascript
JSONP跨域请求实例详解
2016/07/04 Javascript
解决html input验证只能输入数字,不能输入其他的问题
2017/07/21 Javascript
详解vue中axios的封装
2018/07/18 Javascript
js动态设置select下拉菜单的默认选中项实例
2018/08/21 Javascript
浅谈Vue数据响应思路之数组
2018/11/06 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
JS中准确判断变量类型的方法
2020/06/01 Javascript
Python 字符串转换为整形和浮点类型的方法
2018/07/17 Python
使用python来调用CAN通讯的DLL实现方法
2019/07/03 Python
python切片的步进、添加、连接简单操作示例
2019/07/11 Python
python 解决mysql where in 对列表(list,,array)问题
2020/06/06 Python
python文件读取失败怎么处理
2020/06/23 Python
共筑中国梦演讲稿
2014/04/23 职场文书
爱心活动计划书
2014/04/26 职场文书
吨的认识教学反思
2014/04/27 职场文书
体育活动总结范文
2014/05/04 职场文书
2014年小学语文工作总结
2014/12/20 职场文书
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
2021/04/13 Python
CSS filter 有什么神奇用途
2021/05/25 HTML / CSS
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
2021/06/21 MySQL
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python