访问中的 IIF 和 Nz 运算符 sql

IIF and Nz operator in access sql

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

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

示例如果我想从 table 有 10k 记录的记录中获取记录。上述运算符中哪个更好用?

除了特别大的迭代之外,每个的执行将几乎相同。

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

Immediate If 保留数据类型。不仅如此——您还可以使用它来强制转换数据类型。如果你想要一个 Integer 返回或 Date 那么你可以将它作为你的返回参数传递。 Nz 给你它想要返回的变体(Text/String)。

我提到的另一个问题是可用性。 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 执行查询。不一定是常见问题,但需要考虑。