访问sql中的IIF和Nz运算符[关闭]

问题描述 投票:-1回答:1

我在ms-access-2010中的sql查询中使用了IIF(expression , truePart , falsePart)。我还找到了另一个运营商NZ(expression,falsePart).

我想知道哪个运算符在时间和空间复杂性方面更快,以及如何?

示例如果我想从具有10k记录的表中获取记录。哪个来自上面的运营商更好用?

vba ms-access access-vba ms-access-2010 iif
1个回答
1
投票

除非在非常大的迭代中,否则每个的执行几乎相同。

在查询中 - 我认为有几个问题很突出。对我来说,这些是返回的数据类型和函数的本机状态。

立即If保留数据类型。不仅如此 - 您可以使用它来强制数据类型。如果您想要一个Integer或一个Date,那么您可以将其作为返回参数传递。 Nz为您提供了它想要回馈的变体(文本/字符串)。

我提到的另一个问题是可用性。 Immediate If由Jet的表达式服务实现。无需加载完整的Access VBA库以公开它。

换句话说 - 如果你创建一个查询,如

SELECT * FROM TableName WHERE IIF(FieldName Is Null, 0, FieldName) = 0

然后,您可以从Access外部的代码库执行该查询(不需要Access连接)。

Jet将评估该功能。 (并不是说这是一个特别好的查询 - 使用这两个函数实际上很糟糕)。

相当于

SELECT * FROM TableName WHERE Nz(FieldName, 0) = 0

依赖于Nz是Access Application对象模型的成员这一事实。它绝对要求它是执行查询的Access。不一定是常见问题,而是一个考虑因素。

© www.soinside.com 2019 - 2024. All rights reserved.