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;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容