发生情况
情况一
使用等号比较 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;