如何替换空值_mysql ifnull函数用法

来源:这里教程网 时间:2026-02-28 20:37:12 作者:

MySQL 中用 IFNULL() 函数可以快速把空值(

NULL
)替换成指定的默认值,语法简单、效率高,是处理缺失数据最常用的方法之一。

IFNULL 基本用法

IFNULL(expr1, expr2) 的意思是:如果

expr1
不为
NULL
,就返回它本身;否则返回
expr2

expr1
可以是字段名、表达式或常量
expr2
是你希望用来替代
NULL
的值,类型最好与
expr1
兼容
函数只判断是否为
NULL
,不处理空字符串(
''
)、0 或其他“假值”

常见使用场景示例

比如有一张用户表

users
,其中
phone
字段可能为空:

查询时把空手机号显示为
'未填写'

SELECT name, IFNULL(phone, '未填写') AS phone FROM users;
计算订单总金额,避免
NULL
导致求和结果为
NULL

SELECT SUM(IFNULL(amount, 0)) AS total FROM orders;
拼接姓名和昵称,昵称为空时不加括号:
SELECT CONCAT(name, IFNULL(CONCAT(' (', nickname, ')'), '')) FROM users;

注意 NULL 和空字符串的区别

IFNULL 不会把空字符串

''
当作 NULL 处理。如果字段存的是空字符串而非 NULL,需要先用
NULLIF()
转换,再套用
IFNULL

把空字符串也当作缺失来处理:
IFNULL(NULLIF(phone, ''), '未填写')
等价于:先用
NULLIF(phone, '')
''
变成
NULL
,再用
IFNULL
替换

替代方案对比

除了

IFNULL
,MySQL 还提供其他类似函数,适用场景略有不同:

COALESCE(val1, val2, val3, ...)
:返回第一个非
NULL
的值,支持多个参数,标准 SQL,跨数据库兼容性更好
IF(condition, true_val, false_val)
:适合更复杂的逻辑判断,但写法稍长
CASE WHEN
:灵活性最高,适合多条件分支替换

日常简单空值替换,

IFNULL
最直接高效。

相关推荐