大坑之不等于判断
发表日期:2022-08-15 11:50:20 | 来源: | | 浏览(1335) 分类:SQLServer
例如有三条数据:
我们想找出 posMoney和misMoney不一致的数据,逻辑很简单 我们通常想到且写的是:
where posMoney <> misMoney ,理论上出的结果是王五和李四。
然后我们看结果
只有一条王五!! 20000和null 的竟然出不来!
这就是SQLserver的大坑,一定要注意,mysql是没有问题的,但是SQLserver是不能和可能存在null列进行对比,
当然我事先是知道这个的,但是!!有时候我们认为的数据实际不应该有null,但现实是前几天发现业务系统里这列数据居然因为某些异常情况存在很多null值,以至于我这样写成为了被错误。这是最坑的,这才是更是应该注意的,所以代码最好把所有可能性想到,避免让别人的错误成为自己的错。
所以,在SQLserver里如果是金额等严谨性判断<> 最好这样写:
不管你认为可不可能有null 总之先把null替换为数字0或空字符串'',然后再对比 <>,多么痛的领悟……