MySQL 中 不等于 会过滤掉 Null 的问题

MySQL判断字符串不等于

针对于字符串的列,使用MySQL != 的筛选条件时,会将字段为 Null 的数据也当做满足不等于的条件而将数据筛选掉,
因为 NULL和其他字符串比较返回的都是NULL

mysql> SELECT NULL != 'abc';
+---------------+
| NULL != 'abc' |
+---------------+
|          NULL |
+---------------+
1 row in set (0.00 sec)


mysql> SELECT IFNULL(NULL, '') != 'abc';
+---------------------------+
| IFNULL(NULL, '') != 'abc' |
+---------------------------+
|                         1 |
+---------------------------+
1 row in set (0.00 sec)

示例

表A

A1 B1
1 0
2 1
3 NULL

执行如下查询

SELECT * FROM A WHERE B1 != 1;

返回结果如下(第三列 B1为空的也是会筛选掉的

A1 B1
1 0

要查出第三列只需将SQL 改为如下语句 即可

SELECT * FROM A WHERE B1 != 1 OR B1 IS NULL;
# 或者
SELECT * FROM A WHERE IFNULL(B1, '') != 1;

你可能感兴趣的:(MySQL 中 不等于 会过滤掉 Null 的问题)