检查MS Access Query中的空值

时间:2011-01-28 12:06:49

标签: ms-access ms-access-2003

在SQL Server中,我们可以使用IsNull()函数来检查表达式值是否为null。对于前。

Select IsNull(sum(amount),0) as TotalAmount
  From Payments 

同样,MS Access Query中有任何函数来检查null。我需要在MS Access Query中执行相同的语句。

有人可以告诉我在MS Access中替换IsNull()

感谢您分享您的时间。

3 个答案:

答案 0 :(得分:10)

使用Jet / ACE,您的查询可以重写为:

SELECT IIf(Sum(amount) Is Null, 0, Sum(amount)) AS TotalAmount
FROM Payments

这甚至可以从C#开始工作,因为Is NullIIf都内置在Jet / ACE中。请注意Is Null中的空格和缺少括号(它是语句,而不是函数)。

使用IIfIs Null而不是Nz,即使Nz可用,还有两个额外奖励:

  • 它执行得更快,因为所有处理都在数据库引擎内完成(所以它不必对Access库进行函数调用)
  • 它保留了该字段的原始类型;因为Nz返回一个Variant,所以Jet / ACE被强制将结果显示为字符串(通常不是你在处理日期,数字等时所需要的)

更新:Allen Browne对IIfNzIsNull()Is Null的使用率为excellent primer。我打算将该链接发布为我的原始答案,但当时我找不到该页面。我从记忆中尽我所能,但真正归功于布朗先生。

答案 1 :(得分:6)

Access中的等价物就是 nz 功能。

有一个关于如何使用它的好页面here

但是,如果您使用Access作为数据库后端并在您的连接字符串中使用Jet,那么您将无法使用nz。

答案 2 :(得分:0)

同样, 也可用于排序时的日期和时间

.....ORDER BY TRANSDATE ASC,(IIf([PaymentTime] Is Null, '23:59:59', [PaymentTime])) DESC