繁体   English   中英

检查 MS Access Query 中的空值

[英]Check null value in MS Access Query

在 SQL Server 中,我们可以使用 IsNull() 函数来检查表达式值是否为空。 例如。

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

同样,MS Access Query 中是否有任何功能可以检查空值? 我需要在 MS Access Query 中执行相同的语句。

有人能告诉我 MS Access 中IsNull()的替代品吗?

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

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

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

Nz相比,使用IIfIs Null有两个额外的IIf ,即使您可以使用Nz

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

更新: Allen Browne 有一本关于IIfNzIsNull()Is Null使用的优秀入门书 我打算将该链接作为我的原始答案发布,但当时我找不到该页面。 我从记忆中尽力了,但真正的功劳归功于布朗先生。

Access 中的等价物几乎是nz函数。

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

但是,如果您将 Access 仅用作数据库后端并在连接字符串中使用 Jet,则 nz 将不可用。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM