实际问题:在项目中使用了a表左连接b表,a表有数据b表的数据为null,假设b表其中一个字段为pid,where条件后有一句pid <>0,就是pid不为0,无查询结果。一开始怀疑是不是自己的sql语句有啥问题,竟然啥都查不出来。
解决方法:拆分sql,分成两三个步骤运行,结果发现字段等于null的情况下,用算术运算符比较会失效。
例子:一个表的原数据如下
使用算术比较之后如下:查询addr不为0的数据,没有结果
SELECT * from test WHERE addr <> 0
null为特殊值,算数比较比较时,null不是有效值