SQL:MySQL函数:空值处理函数(NULL Handling Functions)
目录
什么是空值(NULL)?
常用空值处理函数总览
1️⃣ IFNULL() – 空值替换函数(If Null)
2️⃣ COALESCE() – 多参数空值判断(返回第一个非 NULL 值)
3️⃣ NULLIF() – 相等则返回 NULL(避免错误值)
4️⃣ IS NULL / IS NOT NULL – 判断是否为空
使用场景总结
什么是空值(NULL)?
在 MySQL 中,NULL 表示一个“未知”或“无值”的状态,不是数字 0,也不是空字符串 ''
。在处理数据库数据时,我们经常会遇到字段值为 NULL 的情况,这时就需要使用空值处理函数来避免出错。
详细介绍可以看我之前发表的文章:
SQL易错解析:你真的理解 NULL 吗?_sql null-CSDN博客
常用空值处理函数总览
函数名称(英文) | 中文名称 | 基本语法 | 英文含义 | 含义说明 |
---|---|---|---|---|
IFNULL() | 空值替换函数 | IFNULL(expr1, expr2) | If Null | 如果 expr1 是 NULL,则返回 expr2 ,否则返回 expr1 |
COALESCE() | 多值优先返回非空值 | COALESCE(val1, val2, ..., valN) | Coalesce(联合) | 从左到右返回第一个非 NULL 的值 |
NULLIF() | 相等则返回 NULL | NULLIF(expr1, expr2) | Null If Equal | 如果两个参数相等,则返回 NULL,否则返回第一个参数 |
IS NULL / IS NOT NULL | 空值判断 | expr IS NULL / expr IS NOT NULL | Is Null | 判断一个表达式是否为 NULL,返回布尔值(1/0) |
1️⃣ IFNULL()
– 空值替换函数(If Null)
-
英文名称:IFNULL — If Null
-
中文含义:如果表达式为 NULL,则返回指定的默认值
-
语法:
IFNULL(expr1, expr2)
-
解释:常用于处理查询结果中的空值,用默认值替代。
-
示例:
SELECT name, IFNULL(bonus, 0) AS bonus_value FROM employees;
2️⃣ COALESCE()
– 多参数空值判断(返回第一个非 NULL 值)
-
英文名称:COALESCE — Coalesce (联合、合并)
-
中文含义:从多个参数中返回第一个非 NULL 的值
-
语法:
COALESCE(val1, val2, ..., valN)
-
解释:相比
IFNULL
更灵活,可以处理多个参数,按顺序判断非 NULL。 -
示例:
SELECT COALESCE(phone, email, '无联系方式') AS contact FROM users;
3️⃣ NULLIF()
– 相等则返回 NULL(避免错误值)
-
英文名称:NULLIF — Null If Equal
-
中文含义:如果两个表达式相等,返回 NULL;否则返回第一个表达式
-
语法:
NULLIF(expr1, expr2)
-
解释:常用于除法操作中,避免除以 0 错误。
-
示例:
SELECT total / NULLIF(quantity, 0) AS avg_price FROM sales;
4️⃣ IS NULL / IS NOT NULL
– 判断是否为空
-
英文名称:IS NULL — Is Null
-
中文含义:判断某个值是否为 NULL(或不为 NULL)
-
语法:
column_name IS NULL
column_name IS NOT NULL
-
解释:常用于
WHERE
子句中进行空值筛选。 -
示例:
SELECT * FROM employees WHERE bonus IS NULL;
使用场景总结
应用场景 | 推荐函数 | 示例语句 |
---|---|---|
替换空值为默认值 | IFNULL() | IFNULL(bonus, 0) |
多个字段找非空值 | COALESCE() | COALESCE(phone, email) |
避免除以 0 错误 | NULLIF() | amount / NULLIF(quantity, 0) |
查询空值记录 | IS NULL | WHERE address IS NULL |
查询非空值记录 | IS NOT NULL | WHERE birthday IS NOT NULL |