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

在mysql中处理NULL值时,不能使用普通的等于(=)或不等于()操作符来判断,因为NULL代表“未知值”,它不等于任何值,包括它自己。正确使用NULL判断需要依赖特定的语法。
使用IS NULL判断空值
要判断某个字段是否为NULL,应使用IS NULL操作符。
- 例如,查询users表中email字段为空的记录:
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做展示处理,就能正确应对大多数场景。


