Access Null的ADO sql Where子句

时间:2014-11-17 04:23:42

标签: sql ms-access ado

在Access中,我可以应用Where Nz([Fieldname])= 7并使查询有效。但是我使用ADO连接到Access并且Nz功能不可用。我尝试过使用IsNull的各种组合但没有成功。任何人都可以给我一个有效的解决方案吗?

2 个答案:

答案 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')

这将解决问题。 的问候,