检查MS Access查询中的空值
问题描述:
在SQL Server中,我们可以使用IsNull()函数来检查表达式值是否为null。例如。检查MS Access查询中的空值
Select IsNull(sum(amount),0) as TotalAmount
From Payments
同样,MS Access查询中有任何函数检查null。我需要在MS Access查询中执行相同的语句。
可以告诉我在MS Access中替换IsNull()
。
感谢分享你的时间。
答
使用Jet/ACE查询可以重新写为:
SELECT IIf(Sum(amount) Is Null, 0, Sum(amount)) AS TotalAmount
FROM Payments
这应该从C#甚至工作,因为Is Null
和IIf
都内置到Jet/ACE。请注意0中的空格和缺少括号(它是陈述,而不是函数)。
有两个加奖金使用IIf
和Is Null
相对于即使Nz
Nz
是提供给您:
- 因为所有的处理都在数据库引擎内完成它的执行速度更快(因此它不” t必须对Access库进行函数调用)
- 它保留字段的原始类型;因为
Nz
返回一个Variant,捷达/ ACE被迫结果显示为一个字符串(通常是不是你想要的使用日期,数字,等等打交道时)
UPDATE:艾伦·布朗有excellent primer关于使用IIf
,Nz
,IsNull()
和Is Null
。我打算将该链接发布为我的原始答案,但我当时找不到该页面。我尽我所能从记忆中获得了最好的回报,但真正的功劳归功于布朗先生。
答
同样, 也可以在日期和时间排序
.....ORDER BY TRANSDATE ASC,(IIf([PaymentTime] Is Null, '23:59:59', [PaymentTime])) DESC
感谢hawbsl时使用!但是当我尝试从C#代码使用Nz执行查询时,我得到Nz未定义的异常。 – IrfanRaza 2011-01-28 12:13:13
我发现IsNull()存在于MS Access中。但是当使用来自C#的查询时,我得到这个错误信息 - “在查询表达式中与函数一起使用的错误数量的参数IsNull(sum(amount),0)'” – IrfanRaza 2011-01-28 12:17:19