正确判断 NULL 需使用 IS NULL 或 IS NOT NULL,不可用 = 或!=;查询时可用 IFNULL 或 COALESCE 将 NULL 转为默认值,确保结果准确。

在 mysql 中处理 NULL 值时,不能使用普通的等于(=)或不等于()操作符来判断,因为 NULL 代表“未知值”,它不等于任何值,包括它自己。正确使用 NULL 判断需要依赖特定的语法。
使用 IS NULL 判断空值
要判断某个字段是否为 NULL,应使用 IS NULL 操作符。
- 例如,查询 users 表中 emai l 字段为空的记录:
select * FROM users WHERE email IS NULL;
- 这条语句会返回所有 email 为 NULL 的行。
使用 IS NOT NULL 判断非空值
如果想筛选出字段有实际值的记录,使用IS NOT NULL。
- 例如,获取有 邮箱 地址的用户:
SELECT * FROM users WHERE email IS NOT NULL;
注意不要用 = 或!= 判断 NULL
以下写法是错误的,不会返回预期结果:
SELECT * FROM users WHERE email = NULL; — 错误
SELECT * FROM users WHERE email != NULL; — 错误
- 这些条件始终返回“未知”(相当于 false),无法正确过滤数据。
使用 IFNULL、COALESCE 处理 NULL 显示
在查询结果中,可以用函数将 NULL 转换为默认值。
示例:
SELECT name, IFNULL(email, ‘ 无 邮箱’) AS email FROM users;
SELECT COALESCE(phone, mobile, ‘ 未提供联系方式 ’) FROM contacts;
基本上就这些。只要记住:判断 NULL 用 IS NULL 或 IS NOT NULL,别用等号,再配合 IFNULL 或 COALESCE 做展示处理,就能正确应对大多数场景。


