MySQL 流程函数详解

1. 引言

MySQL 中的流程函数用于在 SQL 查询中实现条件判断和逻辑控制,可以在不借助存储过程的情况下,直接在 SELECT 语句中完成分支逻辑处理。本文介绍 MySQL 中常用的流程函数及其使用场景。

2. IF 函数

IF 函数是最基础的流程函数,用于简单的条件判断,语法如下:

sql 复制代码
IF(expr1, expr2, expr3)

当 expr1 为 TRUE 时返回 expr2,否则返回 expr3。例如:

sql 复制代码
SELECT IF(1 > 0, '正确', '错误');  -- 返回 '正确'

3. IFNULL 函数

IFNULL 函数用于处理 NULL 值,语法如下:

sql 复制代码
IFNULL(expr1, expr2)

当 expr1 不为 NULL 时返回 expr1,否则返回 expr2。例如:

sql 复制代码
SELECT IFNULL(NULL, '默认值');  -- 返回 '默认值'

4. CASE 表达式

CASE 表达式支持更复杂的多分支判断,有两种写法。第一种是简单 CASE 表达式:

sql 复制代码
CASE value
    WHEN compare_value1 THEN result1
    WHEN compare_value2 THEN result2
    ELSE result_default
END

第二种是搜索 CASE 表达式:

sql 复制代码
CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ELSE result_default
END

例如,根据成绩划分等级:

sql 复制代码
SELECT score,
    CASE
        WHEN score >= 90 THEN '优秀'
        WHEN score >= 60 THEN '及格'
        ELSE '不及格'
    END AS grade
FROM student;

5. 总结

IF、IFNULL 和 CASE 是 MySQL 中最常用的流程函数,合理使用可以简化 SQL 逻辑,提高查询的可读性和灵活性。

相关推荐
阳光九叶草LXGZXJ3 小时前
达梦数据库-报错-15-列【XXX】长度超出定义
linux·运维·数据库·sql·学习
字节渡客3 小时前
Redis键明明过期了,业务还在读到旧数据
数据库·redis·spring
OnlineProxy5 小时前
亚马逊多账号运营:如何在规避“关联封号”风险的同时实现电商规模化扩张
服务器·数据库·redis
辻弋2017 小时前
五年前的旅行视频糊成马赛克?Video2X用Real-ESRGAN逐帧重建细节,但只支持Windows、集显用户建议直接放弃
服务器·数据库·windows·游戏引擎·电脑
可乐鸡翅yeah_8 小时前
业务中 M3U8 水印相关坑,硬水印和动态水印区别
前端·网络·数据库·ffmpeg·m3u8在线
石头麻辣鱼8 小时前
Bamboo 调度系统 OceanBase 适配实战:存储过程迁移踩过的三个大坑
数据库
龙亘川8 小时前
数智驱动民政升级 精准守护民生保障
大数据·数据库·人工智能
念何架构之路9 小时前
zap扩展生态与总结
java·前端·数据库
晚安日记wanna9 小时前
MySQL 回表为什么这么慢?5 种优化手段逐个拆解
数据库·mysql·性能优化
第七页独白9 小时前
汽车零件厂如何通过 QMS 真正落地 IATF 16949——QMS软件系统:品质检验-内审稽核-8d客诉管理:全星质量管理软件系统
java·前端·数据库