【问题标题】:Access 2010 - Need to replace a null with a valueAccess 2010 - 需要用值替换空值
【发布时间】:2011-08-03 06:02:25
【问题描述】:

我有一个查询,它查看两次并计算差异并将值(以秒为单位)放在另一个字段中。然后我对该字段进行排序。问题是当其中一个时间是空的时,新字段中的行未填充,所以当我对行进行排序时,它们中的任何内容都不会被推到顶部。

我想做的是将 null 替换为另一个值。像 9999999 这样的东西。这样,当我执行排序时,现在有 999999 的行将放在排序的底部。

这是查询的 SQL 表达式。

    SELECT FOCFClassic.FirstName, FOCFClassic.LastName, FOCFClassic.[Bib#], FOCFClassic.[2011SDStartTime], FOCFClassic.[2011SDFinishTime], Diff2Dates("ns",[FOCFClassic].[2011SDStartTime],[FOCFClassic].[2011SDFinishTime]) AS 2011SDRunTime, FOCFClassic.SDCategory, FOCFClassic.Team, FOCFClassic.SDRank, DateDiff("s",[2011SDStartTime],[2011SDFinishTime]) AS TotalTime
    FROM FOCFClassic
    WHERE (((Diff2Dates("ns",[FOCFClassic].[2011SDStartTime],[FOCFClassic].[2011SDFinishTime]))<>"") AND ((DateDiff("s",[2011SDStartTime],[2011SDFinishTime])) Is Not Null))
    ORDER BY FOCFClassic.SDRank, DateDiff("s",[2011SDStartTime],[2011SDFinishTime]);

我是这方面的菜鸟,所以需要一只小手握住我的手。

谢谢提前! 戈登

【问题讨论】:

  • 在 DateDiff 表达式中排除 null 正是我现在试图让它工作的原因。我需要完成的是,如果有一个空值,我需要用 999999 替换它。如果我能够做到这一点,那么当 ORDER BY 运行时,带有 99999 的行将被放置在排序的底部。希望有帮助。谢谢!

标签: ms-access null replace ms-access-2010


【解决方案1】:

您可以使用 NZ() 函数:如果字段为空,NZ(MyDate, #1/1/1950#) 将返回 1950 年 1 月 1 日,否则返回字段值。您可以使用 IIF() 和 ISNULL() 函数或 IS NULL 条件获得相同的结果。
在性能方面,使用IIF(myDate IS NULL, #1/1/1950#, myDate)应该是最快的。

【讨论】:

  • 我能够使用 SortedTime 创建另一个字段: IIf([TotalTime] Is Null,999999,[TotalTime]) 然后我按该字段排序。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多