MS Access:IsNull函数为何在查询无记录时未返回预期值?
问题分析与解决方法
问题根源
你当前的查询2写法存在逻辑缺陷:当查询1没有返回任何记录时,FROM [query 1]会导致整个查询2没有结果行,自然无法输出True。IsNull()函数只能判断已有记录中字段值是否为空,但前提是查询1能返回至少一行记录。
解决方案
改用Exists子查询直接判断查询1是否存在记录,这样无论查询1有无结果,查询2都会返回一行预期的布尔值:
SELECT IIf(Exists(SELECT * FROM [query 1]), False, True) AS NullorNot;
或者用Count()统计查询1的主键记录数(主键字段不会为空,统计结果准确):
SELECT IIf(Count([query 1].fieldA) = 0, True, False) AS NullorNot FROM [query 1];
说明
Exists(SELECT * FROM [query 1])会直接检查查询1是否存在记录,存在则返回True,否则返回False,配合IIf()就能得到你预期的结果。- 两种写法都能确保查询2始终返回一行结果,不会出现空白字段的情况。
内容的提问来源于stack exchange,提问作者Braide
相关产品推荐
相关产品推荐

