如何判断空值_mysql is null判断

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

判断 MySQL 中的空值,关键要分清 NULL空字符串('') —— 它们语义不同,写法和处理方式也完全不同。

用 IS NULL / IS NOT NULL 判断 NULL 值

这是唯一正确判断字段是否为 数据库意义上的“空”(即 NULL) 的方式。

查 NULL:
WHERE phone IS NULL
—— 返回 phone 字段真正为 NULL 的记录
查非 NULL:
WHERE email IS NOT NULL
—— 排除所有 email 是 NULL 的行
不能写
= NULL
!= NULL
,因为 NULL 参与任何等值比较都返回 UNKNOWN,结果恒为 false,查不到数据

用 = '' / != '' 判断空字符串

空字符串(

''
)是真实存在的、长度为 0 的字符串,不是 NULL。它需要单独判断。

查空字符串:
WHERE name = ''
查非空字符串(且非 NULL):
WHERE name != '' AND name IS NOT NULL
—— 缺一不可,否则会漏掉 NULL 或 '' 的情况
常见误区:只写
name != ''
,会把 NULL 值也包含进来(因为 NULL != '' 仍为 UNKNOWN,不满足条件),但逻辑上你可能并不想让 NULL 被当作“非空”

同时判断 NULL 和空字符串

业务中常需把两者都视作“无效值”,统一过滤或替换。

查 NULL 或 '':
WHERE col IS NULL OR col = ''
查既不 NULL 也不 '':
WHERE col IS NOT NULL AND col != ''
更简洁写法(MySQL 特有):
WHERE COALESCE(TRIM(col), '') != ''
,可同时剔除 NULL、纯空格、空字符串

用 IFNULL 或 COALESCE 做空值替换

查询时不想看到 NULL,可用函数兜底,提升可读性或兼容性。

SELECT IFNULL(phone, '未填写') FROM users;
—— phone 是 NULL 就显示“未填写”
SELECT COALESCE(phone, mobile, '暂无联系方式') FROM users;
—— 从左到右取第一个非 NULL 值
注意:
IFNULL
只接受两个参数;
COALESCE
支持多个,更灵活

相关推荐