空值与比较

假定有下面这么一个表,

如果希望筛选出不等于a的行,通常我们会用如下的代码:

Tables("表A").Filter = "第一列 <> 'a'"

因为b和空值都不等于a,所以按道理能得到期待的正确结果:

可实际上我们得到的结果会是:

这是因为空值是不参与比较的,不管条件是等于某个值还是不等于某个值,对于空值来说,条件都是不成立的 ,空值只能用Is Null 或者 Is Not Null进行判断。

所以对于上图中的表,要筛选出第一列不等于a的行,正确的代码应该是:

Tables("表A").Filter = "第一列 <> 'a' Or 第一列 Is Null"

意思说是筛选出等一列不等于a或者第一列为空的行。


本页地址:http://www.foxtable.com/webhelp/topics/2055.htm