MySQL 流程控制函数示例详解

 更新时间:2025年09月29日 11:59:05   作者:加洛斯  
本文介绍MySQL流程控制函数及CASE语句,涵盖IF、IFNULL、NULLIF三种函数和简单/搜索CASE两种结构,用于条件判断和逻辑控制,提升SQL处理灵活性,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧

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流程控制函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 检查MySQL中的列是否为空或Null的常用方法

    检查MySQL中的列是否为空或Null的常用方法

    在MySQL数据库中,我们经常需要检查某个列是否为空或Null,空值表示该列没有被赋值,而Null表示该列的值是未知的或不存在的,在本文中,我们将讨论如何在MySQL中检查列是否为空或Null,并探讨不同的方法和案例,需要的朋友可以参考下
    2023-11-11
  • MySQL数据库实现高可用架构之MHA的实战

    MySQL数据库实现高可用架构之MHA的实战

    本文主要介绍了MySQL数据库实现高可用架构之MHA的实战,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • mysql中数据统计的技巧备忘录

    mysql中数据统计的技巧备忘录

    mysql是常用数据库,对于数字操作相关的东西相当方便,这篇文章主要给大家介绍了关于mysql中数据统计技巧的相关资料,非常具有实用价值,需要的朋友可以参考下
    2018-05-05
  • MySQL用正则表达式进行搜索功能实例

    MySQL用正则表达式进行搜索功能实例

    MySQL中的正则表达式是一种强大的文本匹配工具,它允许你使用特定的模式来搜索、替换或检查字符串中的数据,这篇文章主要介绍了MySQL用正则表达式进行搜索功能的相关资料,需要的朋友可以参考下
    2025-08-08
  • Ubuntu与windows双系统下共用MySQL数据库的方法

    Ubuntu与windows双系统下共用MySQL数据库的方法

    ubuntu系统和windows系统双系统共用是用户喜欢使用的方式之一,而MySQL是一个小型关系型数据库管理系统,在Windows平台中常以WAMP方式搭配使用,在Linux平台中常以LAMP组合形式出现,下面的方法可以使得Ubuntu平台共用Windows平台中的MySQL数据库
    2012-01-01
  • MySQL自增列解析(Auto_increment)

    MySQL自增列解析(Auto_increment)

    MySQL数据库为列提供了一种自增属性,本文主要介绍了MySQL自增列解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-09-09
  • mysql死锁和分库分表问题详解

    mysql死锁和分库分表问题详解

    这篇文章主要给大家介绍了关于mysql死锁和分库分表问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Mysql慢查询优化方法及优化原则

    Mysql慢查询优化方法及优化原则

    这篇文章主要介绍了Mysql慢查询优化方法及优化原则,本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-05-05
  • Linux下mysql 8.0.25 安装配置方法图文教程

    Linux下mysql 8.0.25 安装配置方法图文教程

    这篇文章主要为大家详细介绍了Linux下mysql 8.0.25 安装配置方法图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • JDBC如何连接mysql

    JDBC如何连接mysql

    这篇文章主要介绍了JDBC如何连接mysql问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04

最新评论