MySql字段有null值与其他值的比较
SELECT count(1)`在这里插入代码片`
FROM LAW_ENFORCEMENT_TROUBLE TB
WHERE TB.STATUS = 1
AND TB.DUTY_LIMIT_DATE <= NOW()
AND TB.TROUBLE_STATUS != 2
查出结果为0条,但是应该为3条,查看表数据发现,TROUBLE_STATUS里面有的是NULL值,
我恍然大悟,
1、NULL和任何值都不比较
2、NULL值与任何其它值的比较(即使是NULL)永远不会为真
3、NULL只能用is null 或者is not null 来判断,不能用=或者!=来判断
所以才查询不出我要数据,因此可以这么改写
1、 AND IFNULL(TB.TROUBLE_STATUS,-1) != 2
IFNULL的作用是什么?,如果IFNULL(a,b),a的值为null,则返回b,否则返回a;
2、 AND TB.TROUBLE_STATUS != 2 OR TB.TROUBLE_STATUS IS NULL
。