SQL:MySQL函数:条件函数(Conditional Functions)

目录

什么是条件函数?

[常用 MySQL 条件函数总览表](#常用 MySQL 条件函数总览表)

[1️⃣ IF() -- 条件判断函数(If Statement)](#1️⃣ IF() – 条件判断函数(If Statement))

[2️⃣ IFNULL() -- 空值判断与替代函数(If Null)](#2️⃣ IFNULL() – 空值判断与替代函数(If Null))

[3️⃣ NULLIF() -- 相等返回 NULL(Null If Equal)](#3️⃣ NULLIF() – 相等返回 NULL(Null If Equal))

[4️⃣ CASE -- 多条件判断结构(Case When)](#4️⃣ CASE – 多条件判断结构(Case When))

常见使用场景


什么是条件函数?

条件函数是指在 SQL 查询过程中,根据某个条件的真假来决定返回哪一个值的函数。它们常用于控制逻辑流程、数据筛选、分类处理等场景。

常用 MySQL 条件函数总览表

函数名称(英文) 中文含义 语法格式 含义解释 示例
IF() 条件判断函数 IF(condition, true_value, false_value) 如果条件为真,返回 true_value,否则返回 false_value IF(score>=60, '及格', '不及格')
IFNULL() 空值替换函数 IFNULL(expr1, expr2) 如果 expr1 不为 NULL,返回 expr1,否则返回 expr2 IFNULL(bonus, 0)
NULLIF() 相等转 NULL 函数 NULLIF(expr1, expr2) 如果 expr1expr2 相等,返回 NULL,否则返回 expr1 NULLIF(grade, 'F')
CASE 多条件分支判断 CASE WHEN condition THEN result ... ELSE result END 按照多个条件分支进行判断 CASE WHEN salary>10000 THEN '高薪' WHEN salary>5000 THEN '中等' ELSE '低薪' END

1️⃣ IF() -- 条件判断函数(If Statement)

  • 英文含义:IF → if statement

  • 中文解释:根据一个条件是否为真来返回不同的结果(类似于 if-else)。

  • 语法:

sql 复制代码
IF(condition, value_if_true, value_if_false)

示例:

sql 复制代码
SELECT name, IF(score >= 60, '合格', '不合格') AS result FROM students;

2️⃣ IFNULL() -- 空值判断与替代函数(If Null)

  • 英文含义:IFNULL → if null

  • 中文解释:判断某个值是否为 NULL,如果是,则返回指定默认值。

  • 语法:

sql 复制代码
IFNULL(expression, replacement_value)

示例:

sql 复制代码
SELECT name, IFNULL(score, 0) AS final_score FROM students;

3️⃣ NULLIF() -- 相等返回 NULL(Null If Equal)

  • 英文含义:NULLIF → null if equal

  • 中文解释:如果两个表达式相等,则返回 NULL,否则返回第一个表达式。常用于防止除以 0 的错误。

  • 语法:

sql 复制代码
NULLIF(expr1, expr2)

示例:

sql 复制代码
SELECT score / NULLIF(attempts, 0) FROM exam_results;

4️⃣ CASE -- 多条件判断结构(Case When)

  • 英文含义:CASE → conditional switch

  • 中文解释:类似于其他语言中的 switch-case,实现多条件判断与分类。

  • 语法:

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

示例:

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

常见使用场景

场景 使用函数 示例语句
判断通过与否 IF() IF(score >= 60, '通过', '未通过')
缺失值替代 IFNULL() IFNULL(phone, '无号码')
防止除以 0 NULLIF() sales / NULLIF(quantity, 0)
多等级分类 CASE CASE WHEN age < 18 THEN '未成年' ELSE '成年' END
相关推荐
Cloud云卷云舒2 小时前
云卷云舒:从Oracle/MySQL迁移到HaishanDB:迁移评估工具核心技术拆解
mysql·oracle·ai-native·haishandb·信创数据库替换
憧憬成为web高手2 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学2 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
oradh4 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
用户71333585156245 小时前
MySQL - 事务、redo/undo 日志与 MVCC
mysql
z123456789865 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD5 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
java_logo6 小时前
Docker Compose 部署 ClickHouse:快速搭建高性能列式数据库
数据库·clickhouse·docker·列式数据库·轩辕镜像·高性能数据库·clickhouse部署教程
用户71333585156246 小时前
MySQL - InnoDB 的 Buffer Pool
mysql
TlSfoward6 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php