MySQL——流程控制函数

news2024/12/22 18:18:04

在 MySQL 中,流程控制函数是指可以控制存储过程(stored procedure)或函数(function)中执行流程的语句。以下是几个常用的流程控制函数:

1. IF函数

实现IF……ELSE……的效果。

# 如果expr1为true,则返回expr2,否则返回expr3
IF(expr1,expr2,expr3)

可以看出,IF函数与三元运算符很像,如:

		// 比较最大数
        int a=10;
        int b=5;
        // 比较
        int bigNum=a>b?a:b;

即,将IF函数的三个参数中,expr1是条件表达式,最终结果是true或false,如果条件成立(true)则返回expr2,如果条件不成立(false)则返回expr3。例:

SELECT IF(10>5,10,5) AS bigNum;

在这里插入图片描述

2.IFNULL函数

同样是实现IF……ELSE……的效果,相当于IF函数的变种。

# 如果expr1不为NULL,则返回expr1,否则返回expr2
IFNULL(expr1,expr2)

即将原本的条件表达式变形为判断expr1是否为null,不为null就是其本身(expr1),为空则是expr2.

SELECT IFNULL(null,'不空') AS notNull

在这里插入图片描述
相当于IF函数的

SELECT IF(null IS NULL,null,'不空') AS notNull

判断expr1是否为空,为空(true)显示expr2,不为空(false)显示expr3

3.CASE函数

case函数有两种不同的效果

switch case

相当于java中的switch case的效果。即switch中的变量表达式的值与case后面的常量比较。

		int week=3;
        switch (week){
            case 1:
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            case 6:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期日");
                break;
            default:
                System.out.println("非法数据");
                break;
        }

用sql表示:

# NOW()函数用于获取当前日期和时间,
# WEEKDAY(date)函数,表示返回date对应的工作日索引,
# 因为索引从0开始,所以加1;也可以不加1,将when的常量改为工作日索引也可
SELECT CASE WEEKDAY(NOW())+1
	WHEN 1 THEN '星期一'
	WHEN 2 THEN '星期二'
    WHEN 3 THEN '星期三'
    WHEN 4 THEN '星期四'
    WHEN 5 THEN '星期五'
    WHEN 6 THEN '星期六'
    WHEN 7 THEN '星期日'	
	ELSE '非法数据'
END AS `week`;

在这里插入图片描述
函数结构

case  要判断的变量(字段)或表达式
when  常量1  then  要显示的值1(或语句1;
when  常量2  then  要显示的值2(或语句2;
.......
else  要显示的值n或语句n;
end

注意:

  1. 与java不同,直接写case而不是switch,且没有大括号
  2. when后面直接加常量值,不用写冒号,用的是then
  3. then后面如果是显示的,不需要加分号;如果then后面加的是语句,就需要加分号。
  4. when……then……语句可以有多个。
  5. 默认情况用的是else。
  6. 结尾用end

多重IF

类似于java中的多重if判断。

		int grade=87;
        if (grade>=90){
            System.out.println("优秀");
        }else if (grade>=80){
            System.out.println("良好");
        }else if (grade>=70){
            System.out.println("一般");
        }else if (grade>=60){
            System.out.println("及格");
        }else {
            System.out.println("不及格");
        }

用sql表示:

SELECT id,`name`,chinese,
	CASE
		WHEN chinese>=90 THEN '优秀'
		WHEN chinese>=80 THEN '良好'
		WHEN chinese>=70 THEN '一般'
		WHEN chinese>=60 THEN '及格'
		ELSE '不及格'
	END AS `rank`
FROM student

在这里插入图片描述
函数结构:

case
when  条件1  then  要显示的值1或语句1;
when  条件2  then  要显示的值2或语句2;
......
else  要显示的值n或语句n
end

注意:

  1. case后面没有加条件
  2. when后面是条件,结果是true或false;满足条件执行then,显示后面的值或语句
  3. 同样的then后面如果是显示的,不需要加分号;如果then后面加的是语句,就需要加分号。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/455696.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入探究java中的 xxxable和xxxator

前言 相信有一定工作经验的朋友,都见过或者用过xxxable和xxxator ,比如常见的Comparable和Comparator, 还有还有常见并且容易迷糊的Iterable和Iterator, 看这名字,前两个是和比较相关的, 后两个是和迭代相关. 但是命名如此相似的接口, 又有何区别呢?各自的用途又是什么呢? 今…

详解车载设备FOTA测试

作者 | 李伟 上海控安安全测评部总监 来源 | 鉴源实验室 引言:上一篇文章我们以车载Tbox为例介绍了相关的性能测试(车载TBOX嵌入式设备软件的性能测试),本篇我们介绍另外一个重要功能的专项测试:OTA(Over…

MySQL安装及卸载

安装 mysql现在安装的是5.7.mysql的安装方式有两种: 一种是exe方式 另外一种解压版 这次就使用解压版安装 解压缩到非中文目录 编写配置文件 1) 在安装目录下新建my.ini的配置文件 打开文件后缀和隐藏文件显示 2) 新建文件内编写内容 [Client] port 3306 [mysqld] #设置330…

【移植Ardupilot的日志记录方法到linux上】

移植Ardupilot的日志记录方法到linux上 说明日志结构组成日志写入操作预定义日志项运行时添加日志项的方法 单例测试编译方法查看数据其他 说明 采用二进制文件记录,可在mission planer查看 支持所有数据类型记录精巧移植方便可直接在地面站绘制曲线查看可导出生成…

觉非科技发布:基于BEV的数据闭环融合智驾解决方案

2023年上海车展期间,觉非科技基于BEV的数据闭环融合智能驾驶解决方案正式发布。 该方案可通过量产车BEV的实时感知结果,提供完整的城市Map-lite及Map-free数据闭环融合解决方案,并满足城市NOA、记忆通勤/泊车以及感知大模型训练的需要。 车…

OSPF基础配置实验

目录 一、实验要求与拓扑结构 1、实验要求 2、提前规划好的网段以及拓扑结构如下图 二、实验步骤 1、给各个路由器的每个接口配ip 2、运行ospf协议并划分区域 一、实验要求与拓扑结构 1、实验要求 首先划分区域,蓝色区域为Area 0,黄色区域为Area…

MyBatis(十五)MyBatis的逆向工程

前言、 所谓的逆向工程是:根据数据库表逆向生成Java的pojo类,SqlMapper.xml文件,以及Mapper接口类等。 要完成这个工作,需要借助别人写好的逆向工程插件。 思考:使用这个插件的话,需要给这个插件配置哪些…

基于 TensorRT 使用 python 进行推理优化

文章大纲 简介TensorRT 简介构建测试的conda 环境注意事项TensorRT 安装参考文献与学习路径简介 TensorRT 简介 TensorRT是NVIDIA推出的一个高性能的深度学习推理框架,可以让深度学习模型在NVIDIA GPU上实现低延迟,高吞吐量的部署。TensorRT支持Caffe,TensorFlow,Mxnet,P…

【Python】实战:生成无关联单选问卷 csv《压疮风险评估表》

目录 一、适用场景 二、业务需求 三、Python 文件 (1)创建文件 (2)代码示例 四、csv 文件 一、适用场景 实战场景: 问卷全部为单选题问卷问题全部为必填问题之间无关联关系每个问题的答案分数不同根据问卷全部问…

FPGA基于XDMA实现PCIE X8采集AD7606数据 提供工程源码和QT上位机程序和技术支持

1、前言 PCIE(PCI Express)采用了目前业内流行的点对点串行连接,比起 PCI 以及更早期的计算机总线的共享并行架构,每个设备都有自己的专用连接,不需要向整个总线请求带宽,而且可以把数据传输率提高到一个很…

倍数+路径之谜

倍数 :用户登录https://www.lanqiao.cn/problems/583/learning/?page5&first_category_id1&sortstudents_count 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 请问在 1 到 2020 中,有多少个…

Java十大排序算法

排序算法 对一序列对象根据某个关键字进行排序 (1)稳定性 在排序中对于相等的两个元素a、b。如果排序前a在b的前边,排序之后a也总是在b的前边。位置不会因为排序而改变称之为稳定。反之,如果排序后a、b的位置可能会发生改变&am…

Java线程池从入门到精通(线程池实战)

参考 java常用线程池及它们的适用场景(JDK1.8) Java线程与线程池实战 线程池的拒绝策略_线程池 RejectedExecutionHandler 拒绝策略 ThreadPoolExecutor原理解析-关闭线程池 代码经验—java获取cpu个数-docker 一、概念 Java 中的线程池核心实现类是 …

鉴源论坛 · 观模丨面向界面的图形化测试技术

作者 | 熊一衡 华东师范大学软件工程学院博士 苏亭 华东师范大学软件工程学院教授 版块 | 鉴源论坛 观模 01 什么是面向界面的图形化测试(GUI Testing) 图形用户界面(GUI) 是一种通过图形化方式呈现信息、数据、功能和操作的用户界面,旨在…

一起学 WebGL:三角形加上渐变色

大家好,我是前端西瓜哥。之前教大家绘制一个红色的三角形,这次我们来画个有渐变的三角形。 本文为系列文章,请先阅读如何绘制红色三角形的文章: 《一起学 WebGL:绘制三角形》 原来的写法,颜色是在片元着色器…

移动边缘计算意味着真正的5G时代已经来临

5G的承诺尚未实现,但现在宣布其失败还为时过早。DataBank首席执行官劳尔k马丁尼克(Raul K. Martynek)表示 ,真正的5G正在通过移动边缘计算实现,而数据中心将成为其中的核心。 在美国所有主要的移动运营商都在大力宣传他们在全美范围内提供无…

STM32-移植RTT

目录 Cubemx引入RTT资源新建工程生成工程 时钟选择选单片机引脚引脚搜索快速选中取消引脚选中引脚命名IO普通模式设置 串口串口基本配置串口DMA ADC采集ADC基本应用ADC_DMA RTT-shell指令定义RTTCOM调试串口J-Link RTT调试 教程shell指令RTT外设驱动使用1--串口添加 STM32_pwm …

玩元宇宙血亏后 蓝色光标梭哈AI也挺悬

蓝色光标2022年年度报告出炉,巨亏21.75 亿元,其中20.38亿亏损因商誉、无形资产及其他资产减值造成,而在实际亏损业务中,元宇宙占比不小。 蓝色光标在元宇宙领域的布局,主要通过三家子公司实施,分别为蓝色宇…

分布式文件系统HDFS的多问多答

分布式文件系统HDFS 简述HDFS的优缺点简述HDFS的体系结构请论述HDFS中SecondaryNameNode的作用和工作原理请论述HDFS写数据原理 简述HDFS的优缺点 HDFS的优良特性: ①兼容廉价的硬件设备。在成百上千台廉价服务器中存储数据,常会出现节点失效的情况&…

从浏览器输入url到页面加载(四)协议栈和套接字以及三次握手确认对于通信的作用

前言 上一节我们说到了域名对用户记忆的优点,但是IP对于路由器的优点,所以需要有DNS服务器提供域名与IP地址的转换,还说到了在前端开发中dns-prefetch域名预解析的好处。 本小节呢,我们会说一些不常用的知识点,如协议…