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;