mysql 中不等于过滤 null 的问题(同时比较等于,大于和小于)
在写 SQL 条件语句是经常用到 不等于‘!=’的筛选条件,此时要注意此条件会将字段为 null 的数据也当做满足不等于的条件而将数据筛选掉。
1、原始数据和表结构
CREATE TABLE `test01` (
`ID` bigint(18) NOT NULL AUTO_INCREMENT,
`NUM` bigint(18) DEFAULT NULL COMMENT 'NUM',
`NAME` varchar(250) DEFAULT NULL COMMENT '名称',
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
数据:
2、测试SQL 和结果
测试结果
3、可以发现:
- 不等于:会过滤为空(特别注意);
- 等于:精确匹配没问题
- 大于等于:空不会大于,没问题
- 小于等于:空也会小于(要注意)。