首页/数据/SQL 速查/IFNULL 与 ISNULL(MySQL)
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条
函数速查60 条
变更与事务52 条性能与执行计划72 条

IFNULL 与 ISNULL(MySQL)

MySQL 专用:IFNULL(a,b) 两参兜底;ISNULL(x) 是函数形式判断空值。PostgreSQL 没有 IFNULL,统一写 COALESCE。

SQL 速查数据更新于 2026-10-12

MySQL

MySQL
SELECT IFNULL(coupon_id, 0) FROM orders;
SELECT ISNULL(coupon_id)    FROM orders;  -- 1/0(函数形式)
SELECT coupon_id IS NULL    FROM orders;  -- 等价判断写法

PostgreSQL

PostgreSQL
SELECT COALESCE(coupon_id, 0) FROM orders;
SELECT coupon_id ISNULL FROM orders;      -- ISNULL 是 IS NULL 的别名关键字
IFNULLMySQL 独有、限 2 参;PG 用 COALESCE
ISNULL(x)MySQL 返回 1/0;PostgreSQL 里 ISNULL 是后缀关键字的写法
可移植写法一律用 COALESCE(a, b)

易错点

  • 把 ISNULL(col) 当布尔值用在 WHERE 里在 PG 能跑(col ISNULL),但 MySQL 用函数返回 1/0,语义要靠比较表达
  • IFNULL 嵌套多层可读性差,超过两层改用 COALESCE 或 CASE 表达业务优先级

数据来源与参考

  • MySQL 8.0 Reference Manual · Comparison Functions
  • PostgreSQL Documentation · Comparison Operators
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌