昨天在我们的一个程序发现了一个Bug, 程序是给Accounting用的一个Report,但是Accounting的人发现无论如何这个Report抓不出数据,跟进去查了一下,发现查数据的Sql是类似这样的:
Select * from table_1 where sonumber not in
(select sonumber from table_2
union all
select sonumber from table_3
)
数据在Table_1里是存在的,table_2/3 里也不包含对应的SOnumber,但是Query的结果就是没有数据。再查了一下,发现原因在于Table_2中有些SoNumber的值是Null,而 where [field] not in (null) 这个判断,在Sql 里总是会返回false的 (偶这里的SET ANSI_NULLS 是ON,不过好像偶没见谁用过OFF)
改了一下in里的Select,处理掉NULL值以后Bug Fix
-------------------------------
潜水N久,俺又回来了。 最近会玩弄一些Biztalk 和 SAP R3互联方面的东西,今天这个算一小泡泡。
打印 | 张贴于 2006-10-13 14:42:00 | Tag:二进制生活
留言反馈
有一些函数会忽略null来进行处理,而有一些则不会忽略。。。例如sum/avg等(如果我没记错的话)会忽略null值,而count不会忽略。group by也会将所有的null值归为一类。
反正null是一个需要特别留意的值。如果你研究深入一些,会发现它其实挺有意思的。。
俺还在老地方啊。快3年了都。 你最近怎么样?
BTW,小S是谁?
msn:bucher(at)msn.com
我看到发mail的是Steven He, 还以为就是你呢。汗~~~
Newegg不错。
@xzwplus:
Steven 错了。 BTW,偶也不是小S haha