在Access中,我可以应用Where Nz([Fieldname])= 7并使查询有效。但是我使用ADO连接到Access并且Nz功能不可用。我尝试过使用IsNull的各种组合但没有成功。任何人都可以给我一个有效的解决方案吗?
答案 0 :(得分:1)
为什么不简单地使用[Fieldname]=7
作为WHERE
子句中的条件?
如果你没有为Nz
指定第二个参数,当第一个参数为{{1时,它将返回Empty
值(相当于空字符串或数字0) }}。因此,如果Null
为[Fieldname]
,则条件Null
将评估为Nz([Fieldname])=7
,并且该行将被排除。
同样,如果False
为[Fieldname]
,则条件Null
将评估为[Fieldname]=7
,并且该行将被排除。
使用Null
也可能允许[Fieldname]=7
上的索引(如果有)用于提高查询的性能,而Fieldname
可能不会。
答案 1 :(得分:0)
这是众所周知的问题。而不是NZ()
使用Access IIF()
函数:
iif ( condition, value_if_true, value_if_false )
例如,与您的案例相关(假设Fieldname数据类型为int):
WHERE (iif (([Fieldname] Is Null), 0, [Fieldname])=7)
如果DataType是Text,则使用以下语法:
WHERE (iif (([Fieldname] Is Null), '0', [Fieldname])='7')
这将解决问题。 的问候,