在Access中,是否需要IIf函数的"falsepart"?
In Access, is the "falsepart" of the IIf Function required?
在将一些 Access 查询转换为 T-SQL 时,我遇到了 Access 函数 IIf。我阅读了文档 here 并了解到它需要 3 个参数:表达式、if true 和 if false。我还没有发现是否需要“假”参数?如果没有提供 false,行为是什么?
更新:
当有人问这个问题时,我 不知道 查询是否仅使用 2 个参数(b/c 我不能 运行 Access 中的查询)。然而,我做了,怀疑它可能工作(只有 2 个参数)b/c 我正在转换的一些查询(到 T- SQL) 嵌套了 IIF,最后一个 IIF 只有 2 个参数。
是IIf
,不是IFF
。 VBA 和文本框表达式中的所有参数都是必需的,并且两者都必须是可计算的(没有错误结果,例如 DivBy0),因为这两个部分都将被计算——如果任何一个出错,整个表达式都会出错。 Access 查询中的 IIf() 的工作方式不同 - 'falsepart' 仅在 'truepart' 失败时计算,如果未提供 'falsepart',表达式 returns Null 如果 'truepart' 失败。
尝试一些表达式,看看会发生什么。一个用于测试:IIf(1=2,"T")
.
是的,它是必需的,它实际上就像一个 if else 语句。
即如果条件满足则发生一个动作,如果条件不满足则发生另一个动作
June7 的精彩回答补遗:
这里有两个在 Access 中有效的简单查询 SQL:
SELECT IIf(1=1, "yes")
(returns“是”)
SELECT IsNull(IIf(1=2, "yes"))
(returns -1 aka True) - 所以如果你省略 falsepart
, IIf()
returns 如果 expr
不计算为 NULL没错。
在将一些 Access 查询转换为 T-SQL 时,我遇到了 Access 函数 IIf。我阅读了文档 here 并了解到它需要 3 个参数:表达式、if true 和 if false。我还没有发现是否需要“假”参数?如果没有提供 false,行为是什么?
更新: 当有人问这个问题时,我 不知道 查询是否仅使用 2 个参数(b/c 我不能 运行 Access 中的查询)。然而,我做了,怀疑它可能工作(只有 2 个参数)b/c 我正在转换的一些查询(到 T- SQL) 嵌套了 IIF,最后一个 IIF 只有 2 个参数。
是IIf
,不是IFF
。 VBA 和文本框表达式中的所有参数都是必需的,并且两者都必须是可计算的(没有错误结果,例如 DivBy0),因为这两个部分都将被计算——如果任何一个出错,整个表达式都会出错。 Access 查询中的 IIf() 的工作方式不同 - 'falsepart' 仅在 'truepart' 失败时计算,如果未提供 'falsepart',表达式 returns Null 如果 'truepart' 失败。
尝试一些表达式,看看会发生什么。一个用于测试:IIf(1=2,"T")
.
是的,它是必需的,它实际上就像一个 if else 语句。
即如果条件满足则发生一个动作,如果条件不满足则发生另一个动作
June7 的精彩回答补遗:
这里有两个在 Access 中有效的简单查询 SQL:
SELECT IIf(1=1, "yes")
(returns“是”)
SELECT IsNull(IIf(1=2, "yes"))
(returns -1 aka True) - 所以如果你省略 falsepart
, IIf()
returns 如果 expr
不计算为 NULL没错。