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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了访问sql中的IIF和Nz运算符[关闭]相关的知识,希望对你有一定的参考价值。

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

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

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

答案

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

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

立即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。不一定是常见问题,而是一个考虑因素。

以上是关于访问sql中的IIF和Nz运算符[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

oracle sql developer中的IIF语句

将访问 if 语句转换为优势代码

Access IIF 到 SQL 语句的转换

NZSQL/代码 - Netezza NZ-SQL 中的 LEFT() 函数

T-SQL 中的求和 IIF

IIF 表达式中的 SQL Report Builder time(0) 和 int