我在MS Access查询中创建了一个IIf语句,以填充特定字段中的空格。该声明仅影响部分数据,但并非全部。为什么它只能在一定比例的记录中起作用?
Field:Line_off_Date
Table:Claims
Criteria:IIf(IsNull("Line_off_Date "),"1/1/1900"
以下是分隔后的官方Sql:
SELECT Claims.Line_off_Date
FROM Claims
WHERE (((Claims.Line_off_Date)=IIf("Line_off_Date IsNull",#1/1/1900#,"Line_off_Date ")));
我无法在此网站上进行屏幕截图,但我可以给出一个模拟表示:
Line_off_Date
2013年12月23日 2013年12月23日 2010年5月16日 1/1/1900 1/1/1900
2000年12月10日 11/4/2008
这列为一列,空格在1/1/1900和12/10/2000之间。当我在这里发布它时,它变成了一个段落。我希望这在某种程度上有所帮助......
答案 0 :(得分:2)
我不确定你的目标,但这看起来像你可以使用Nz Function。
Criteria: Nz(Line_off_Date, "1/1/1900")
如果您想要IIf
,请尝试这种方式......
Criteria: IIf(Line_off_Date Is Null, "1/1/1900", Line_off_Date)
请注意,这些建议假设Line_off_Date
是文本数据类型。如果它实际上是日期/时间,请使用#
而不是引号来区分值。
Criteria: Nz(Line_off_Date, #1/1/1900#)
Criteria: IIf(Line_off_Date Is Null, #1/1/1900#, Line_off_Date)
看到你的WHERE
条款后,我感到很困惑......
WHERE (((Claims.Line_off_Date)=IIf("Line_off_Date IsNull",#1/1/1900#,"Line_off_Date ")));
除了引用等问题,我认为逻辑是错误的。如果您说“向我显示Line_off_Date
=除Line_off_Date
中存储的内容之外的行,则可能无法获得任何行。
我认为你需要一种不同的方法。如果您需要更多帮助,请根据这些数据向我们展示一组简短的样本数据和所需的输出。
根据评论讨论,我的理解是你真的不想过滤基于Line_off_Date
的结果集---这意味着这不是{{1}子句问题。相反,您希望检索WHERE
值,但将Line_off_Date
替换为Null。如果这是正确的,请使用#1900-1-1#
子句中的字段表达式进行转换。
SELECT