IFNULL
用默认值替换 NULL。
简介
MySQL 的 IFNULL(value, fallback) 只在第一个表达式为 NULL 时返回备用值,空字符串、0 和 FALSE 不会触发替换。备用值应与原字段保持可兼容的数据类型,否则隐式转换可能影响排序和计算;跨数据库查询可优先考虑标准 SQL 的 COALESCE。
基础语法
SELECT IFNULL(phone, 'N/A') AS phone FROM customers;
示例
IFNULL 示例
示例把 customers.phone 中的 NULL 显示为 N/A,同时保留已有号码,说明 IFNULL 不会改写原表数据。
示例数据表
表名:
customers| phone |
|---|
| 138-0000-0001 |
| NULL |
| 138-0000-0003 |
运行结果
| phone |
|---|
| 138-0000-0001 |
| N/A |
| 138-0000-0003 |
常见问题
IFNULL 会把空字符串也替换掉吗?
不会。IFNULL 只在表达式为 NULL 时返回替代值;空字符串、0 和 FALSE 都不是 NULL。
IFNULL 与 COALESCE 怎么选择?
MySQL 中 IFNULL 只接两个参数;COALESCE 可依次检查多个值并且更便于跨数据库迁移。
替代值为什么要注意类型?
数据库需要推导统一结果类型;数字与文本混用可能触发隐式转换,影响比较、排序或下游程序读取。
标签
这篇内容是否清楚?
感谢反馈,我们会把它用于后续内容复核。