今天在MSN Blog中,偶然看到同事抱怨用OLEDB连接数据库执行SQL,用"=NULL"不能返回想要的结果集,但用"Is NULL"却可以。因此,他认为这是数据库的一个Bug。
其实,在数据库中,NULL值表示Unknow。所以,SQL92标准规定NULL不能用=、>、<比较,而需要用IS (NOT) NULL。
某些数据库允许不按照SQL92标准进行NULL比较,但此时返回的值是不确定的。如果你事先给字段赋了NULL值,则“=NULL”可以返回TRUE;反之,数据库通常会对这种比较进行忽略。
为了保证结果的唯一性,推荐所有地方都使用IS (NOT) NULL。
可以参见MSDN的相关文章。
本文解释了在SQL中为何不应使用=NULL来比较NULL值,并推荐使用IS NULL来确保查询结果的准确性。同时介绍了NULL值在数据库中的含义及SQL92标准的相关规定。

被折叠的 条评论
为什么被折叠?



