正确答案是使用IS NOT NULL判断字段非空,因为NULL表示未知值,不能用!=或比较,例如SELECT * FROM users WHERE email IS NOT NULL;可查出email有值的记录,而column != NULL会返回假,无法得到预期结果,同理判断等于NULL也需用IS NULL而非=。
在 MySQL 中,不能用普通的不等于操作符(!= 或 )来判断某个字段是否不等于 NULL。因为 NU
LL 表示“未知值”,它不等于任何值,包括它自己。所以即使你写 column != NULL,结果也会是 NULL(即假),无法返回你想要的数据。
正确查询“不等于 NULL”的方法
要判断某个字段不是 NULL,应该使用 IS NOT NULL 操作符。
-
语法:
WHERE column_name IS NOT NULL - 这会筛选出该字段有实际值(非空)的记录
常见错误写法(不要这样写)
-
WHERE column_name != NULL—— 永远不会匹配任何行 -
WHERE column_name NULL—— 同样无效
正确示例
假设有一个用户表 users,你想查出所有邮箱不为空的用户:
SELECT * FROM users WHERE email IS NOT NULL;
这条语句会返回 email 字段有值的所有记录,排除了 email 为 NULL 的行。
补充:判断等于 NULL 的方式
同理,也不能用 = NULL 来判断是否为 NULL,必须使用:
WHERE column_name IS NULL
基本上就这些。记住:处理 NULL 值时,永远使用 IS NULL 或 IS NOT NULL,而不是 = 或 !=。这是 SQL 标准定义的行为,不只是 MySQL 如此。








