今天在修改一个BUG时,数据中含有''和NULL,使用!=''查询,居然能找到正确的数据。

select * from test where key1 != '';

然而查询空时必须条件都写上

select * from test where key1 = '' OR key2 is NULL;

然后再网上找了下说:使用mysql的!=的时候,要注意一点的是!=只会筛选该字段非空的数据,如果查询的表中有字段为null,这些数据都不会被查询出来,即时他!=某个数据
即:

select * from test where key1 != '' 等价于 select * from test where key1 !='' AND key1 is NOT NULL

推荐使用第二种查询方式。