在WHERE子句中使用UCase函数的MS Access Query不返回空值

时间:2014-08-28 20:24:04

标签: sql ms-access

我正在尝试从MS Access表中检索不包含单词" survey"在名为SurveyedBy的字段中。我使用WHERE子句开发了以下查询以限制结果:

SELECT PropertyNumber, PropertyOwner, EnteredBy, EnterDate, SurveyedBy, SurveyDate, YearBuilt 
FROM MarshallSwift 
WHERE (LCase([SurveyedBy]) Not Like "*survey*");

但是,当我运行查询时,它不会返回该字段中包含null的任何记录。我尝试使用UCase函数代替" SURVEY "但仍然没有得到SurveyedBy字段为空的任何记录。

我找到答案的最接近的是:Access And/Or exclusions。但是,我正在使用DAO。我确实尝试使用%作为通配符,但结果却是一样的。

我很困惑因为UCase函数应该根据这个返回null:http://office.microsoft.com/en-us/access-help/ucase-function-HA001228930.aspx。也许我不理解WHERE子句?非常感谢任何想法。

谢谢。

2 个答案:

答案 0 :(得分:2)

Null不等于任何东西,也不像任何东西,尝试:

WHERE (LCase([SurveyedBy] & "") Not Like "*survey*");

这将使SurveyedBy成为一个空字符串。如果您愿意,也可以查看Nz(http://www.techonthenet.com/access/functions/advanced/nz.php)。

答案 1 :(得分:2)

NULL"失败"除IS NULL以外的所有测试。明确检查:

WHERE (LCase([SurveyedBy]) Not Like "*survey*") or SurveyedBy is null