检查MS Access Query中的空值

Irf*_*aza 4 ms-access ms-access-2003

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

Select IsNull(sum(amount),0) as TotalAmount
  From Payments 
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢你分享你的时间.

mwo*_*e02 10

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

SELECT IIf(Sum(amount) Is Null, 0, Sum(amount)) AS TotalAmount
FROM Payments
Run Code Online (Sandbox Code Playgroud)

因为这应该甚至从C#的工作Is Null,并IIf都内置到Jet/ACE.请注意空格Is Null和缺少括号(这是一个声明,而不是一个函数).

使用时有两个额外的奖励,IIfIs Null不是Nz即使Nz你可以使用:

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

UPDATE:艾伦·布朗有一个极好的底漆上使用IIf,Nz,IsNull(),和Is Null.我打算将该链接发布为我的原始答案,但当时我找不到该页面.我从记忆中尽我所能,但真正归功于布朗先生.


haw*_*bsl 6

在Access中几乎相当于nz函数.

有一个关于如何使用它的一个很好的页面在这里.

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