Access 2010 - 需要用值替换空值
Posted
技术标签:
【中文标题】Access 2010 - 需要用值替换空值【英文标题】:Access 2010 - Need to replace a null with a value 【发布时间】: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 的行将被放置在排序的底部。希望有帮助。谢谢! 【参考方案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]) 然后我按该字段排序。谢谢!以上是关于Access 2010 - 需要用值替换空值的主要内容,如果未能解决你的问题,请参考以下文章