MySQL什么情况下会查不到null字段数据,为什么?

170 阅读1分钟

发生情况

情况一

使用等号比较 NULL 值

SELECT * FROM table_name WHERE column_name = NULL;

情况二

使用不等号比较 NULL 值

SELECT * FROM table_name WHERE column_name != NULL;

情况三

使用 IN 语句比较 NULL 值

SELECT * FROM table_name WHERE column_name IN ('value1', 'value2', NULL);

情况四

使用 NOT IN 语句比较 NULL 值

SELECT * FROM table_name WHERE column_name NOT IN ('value1', 'value2', NULL);

原因

SQL 中 NULL 值表示未知或缺失的值,不等于任何值,也不等于 NULL。因此,无法使用等于或不等于等比较操作符直接比较 NULL 值。需要使用特定的操作符如 IS NULL 或 IS NOT NULL 进行比较。

正确比较 NULL 值的方法:

使用 IS NULL

SELECT * FROM table_name WHERE column_name IS NULL;

使用 IS NOT NULL

SELECT * FROM table_name WHERE column_name IS NOT NULL;