在 Access 的 IIf 函数中,如何分配空值?
Posted
技术标签:
【中文标题】在 Access 的 IIf 函数中,如何分配空值?【英文标题】:In an IIf function in Access, how do I assign null values? 【发布时间】:2015-12-03 20:43:33 【问题描述】:我正在 MS Access 的查询中创建一个计算字段 (Field3)。在此示例中,Field2 包含数字和字符值。我希望 Field3 仅包含来自 Field2 的数值,并将所有字符值转换为 Null 值,以便以后可以将 Field3 作为数值字段执行计算。这是在 IIf 函数中,因为如果 Field1 =“AA”,我希望 Field3 仅包含来自 Field2 的值。这是我尝试在查询设计视图的字段行中输入的内容:
Field3: IIf([Field1]="AA",[Field2]*1,NULL)
这有效,除非 Field2 是字符值,然后 Field3 读取“#Error”而不是空白。
如果不满足 IIf 条件,分配 NULL 值的正确语法是什么?
【问题讨论】:
也许这是一个错误的问题 - 看起来 NULL 赋值正在工作,但问题是当 Field2 是字符时,它返回错误而不是转换为 NULL。 下次您提出问题时,请尝试从一开始就包含尽可能多的信息。This works except where Field2 is a character value
部分 (在我回答问题后添加) 至关重要。
【参考方案1】:
如果您希望表达式仅在 [Field1]="AA" 和 [Field2] 包含数字时返回 [Field2]*1
,否则返回 Null,请在条件中使用 IsNumeric()
...
IIf([Field1]='AA' And IsNumeric([Field2]), [Field2]*1, Null)
如果[Field2]*1
的目的是将[Field2]
文本值转换为数字,请考虑使用 Val() 函数...
IIf([Field1]='AA' And IsNumeric([Field2]), Val([Field2]), Null)
【讨论】:
这是我需要的答案 - 谢谢!因为一开始我不确定问题出在哪里,所以我问的不是正确的问题......【参考方案2】:Null
是正确的语法。
但至少在我这台机器上的旧德语 Access 版本中,我需要在查询设计视图中使用分号而不是逗号。
那你可以试试这个吗?
Field3: IIf([Field1]="AA";[Field2]*1;NULL)
在 SQL 视图中,语法与您的问题完全相同:
SELECT IIf([Field1]="aa",[Field2]*1,Null) AS Field3
FROM TestTable;
【讨论】:
我用分号试过,但它给出了“无效语法”错误。当我使用 Field3: IIf([Field1]="AA",[Field2]*1,NULL) 运行查询时,它可以工作,除了它生成 #ERROR 作为值而不是 NULL 值。 您可以尝试切换到 SQL 视图,修改IIf
使其看起来像我的第二个示例吗?如果查询有效,则切换回查询设计视图,您应该会看到正确的查询设计视图语法。
嗯....我刚刚搜索了“ms access iif”并查看了一些英文 Access 版本的屏幕截图,显然是commas actually work in the English version(当我在德语 Access 中使用逗号时出现语法错误2010)。您使用哪种语言的 Access 版本?
在 SQL 视图中,它与您的示例匹配,但在运行时仍返回 #ERROR 值。我在 Windows 上使用 English Access 2010。以上是关于在 Access 的 IIf 函数中,如何分配空值?的主要内容,如果未能解决你的问题,请参考以下文章
MS ACCESS 2016 - 使用 Null 进行查询的标准