当前位置: 代码网 > it编程>数据库>Mysql > MySQL 流程控制函数示例详解

MySQL 流程控制函数示例详解

2025年09月29日 Mysql 我要评论
mysql提供了多种流程控制函数,允许用户根据条件来改变 sql语句的执行逻辑。这些函数在数据查询、更新和存储过程中都非常有用,在本文您将能学习到如下函数:if(expr, v1, v2)ifnull

mysql提供了多种流程控制函数,允许用户根据条件来改变 sql语句的执行逻辑。这些函数在数据查询、更新和存储过程中都非常有用,在本文您将能学习到如下函数:

  1. if(expr, v1, v2)
  2. ifnull(v1, v2)
  3. nullif(expr1, expr2)
  4. 简单 case 语句
  5. 搜索 case 语句

一、条件选择函数

这类函数通常用于简单的“如果…则…”逻辑。

1.1 if(expr, v1, v2)

这是最直接的流程控制函数,类似于三元运算符。

语法if(condition, true, false)
功能: 如果条件表达式 condition 为真(非零、非null),则返回 true,否则返回false

示例

其表结构如下

-- 如果分数大于等于60,返回‘及格',否则返回‘不及格'
select name, score, if(score >= 60, '及格', '不及格') as result from student;
-- 处理null值
select name, class,if(class is null, '没有班级', '有班级') as "班级" from student;

其结果如下:(我们要重点关注一下第二个结果,if函数检测的第一个参数是非零、非null的为真,所以如果是空则也会将其判断为


1.2 ifnull(v1, v2)

专门用于检查值是否为null

语法ifnull(value1,value2)
功能: 如果value1的值不为空(特指null),则返回value1,否则返回value2
示例

其表结构如下

-- 如果邮箱为null,显示‘n/a'
select name, class,ifnull(class,"没有班级") as "班级" from student;

其结果为

1.3 nullif(expr1, expr2)

用于比较两个表达式。如果它们相等,则返回 null,否则返回第一个表达式。
语法nullif(expression1, expression2)
功能: 如果 expression1 等于 expression2,则返回 null,否则返回 expression1。这在避免除零错误等场景中非常有用。
示例

其表结构如下

-- 查询变动年纪
select name, class,new_class,nullif(class,new_class) as "变动年级" from student;
-- 避免除零错误
select name, class,score,100/nullif(score,0) as "简单除法" from student;

其结果如下

二、case 语句

case 语句提供了比if() 函数更强大更灵活多分支条件判断能力。它有两种形式:简单 case搜索 case

2.1 简单 case 语句

将某个表达式与一系列简单的值进行比较。
语法

case expression
    when value1 then result1
    when value2 then result2
    ...
    [else else_result]
end

功能: 将 expression 的值依次与每个 when 子句中的 value 进行比较。如果匹配,则返回对应的 result。如果都不匹配,则返回 else 部分的结果;如果没有 else 且无匹配项,则返回 null

示例

其表结构如下

select
    `name`,
    score,
    case score
        when 'a' then "优秀"  
        when 'b' then "良好"  
        when 'c' then "及格"  
        when 'd' then "不及格"  
        else "没考试"
    end as "成绩"
from student;

其结果如下

2.2 搜索 case 语句

允许在 when 子句中使用更复杂的条件表达式,而不仅仅是等值比较。
示例

其表结构如下

select
    `name`,
    score,
    case
        when score < 60 then "不及格"
        when score >= 60 and score < 70 then "及格"
        when score >= 70 and score < 80 then "良好"
        when score >= 80 then "优秀"
        else "没考试"
    end as grade_level
from student;

其结果如下

到此这篇关于mysql 流程控制函数的文章就介绍到这了,更多相关mysql流程控制函数内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

  • MySQL之搜索引擎使用解读

    mysql的存储引擎是什么mysql当中数据用各种不同的技术存储在文件中,每一种技术都使用不同的存储机制,索引技巧 锁定水平,以及最终提供的不同的功能和能力,这些就是我们说的存储引…

    2025年09月27日 数据库
  • Docker MySQL启动问题及解决过程

    Docker MySQL启动问题及解决过程

    问题概述docker 环境中的 mysql 容器启动失败,主要表现为两个核心错误:临时文件权限问题:can't create/write to file '/t... [阅读全文]
  • MySQL误删数据或者丢失?这6种方案能帮你快速恢复!

    前言最近星球中有位小伙伴说:他不小心把测试环境mysql表中所有数据都误删了,问我要如何快速恢复?幸好他误删的是测试环境,非生产环境。我遇到过,之前有同事把生产环境会员表中的数据误…

    2025年09月27日 数据库
  • Nginx配置proxy protocol代理获取真实ip的全过程

    前言在现代开发中有很多场景需要拿到用户的真实ip,比如安全策略,和地区热点信息推送等功能,但是现在代理很多。用户可能会通过代理访问服务,或者黑客攻击的时候也会使用很多肉机隐藏其真实…

    2025年09月26日 数据库
  • CentOS中设置yum源的详细步骤

    CentOS中设置yum源的详细步骤

    在centos中设置yum源可以分为以下几个步骤。我将以设置阿里云镜像源为例进行说明:1. 备份原有yum源# 备份原有repo文件sudo cp -r /et... [阅读全文]
  • MySQL从视图到用户和权限管理操作

    一:视图的定义视图是⼀个虚拟的表,它是基于⼀个或多个基本表或其他视图的查询结果集。视图本⾝不存储数据,⽽是通过执⾏查询来动态⽣成数据。⽤⼾可以像操作普通表⼀样使⽤视图进⾏查询、更新…

    2025年09月26日 数据库

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com