10

我有一个 SQL 查询(MS Access),我需要添加两列,其中任何一列都可能为空。例如:

SELECT Column1, Column2, Column3+Column4 AS [Added Values]
FROM Table

其中 Column3 或 Column4 可能为空。在这种情况下,我希望 null 被视为零(so 4 + null = 4, null + null = 0)。

关于如何做到这一点的任何建议?

4

7 回答 7

14

由于 Access 中的 ISNULL 是一个布尔函数(一个参数),因此像这样使用它:

SELECT Column1, Column2, IIF(ISNULL(Column3),0,Column3) + IIF(ISNULL(Column4),0,Column4) AS [Added Values]
FROM Table
于 2008-09-26T02:29:58.850 回答
4

根据Allen Browne的说法,最快的方法是使用IIF(Column3 is Null; 0; Column3),因为NZ()ISNULL()都是 VBA 函数,调用 VBA 函数会减慢 JET 查询的速度。

我还要补充一点,如果您使用链接的 SQL Server 或 Oracle 表,IIF 语法也是要在服务器上执行的查询,如果您使用 VBA 函数则不是这种情况。

于 2011-03-28T15:14:04.697 回答
2

更清洁的是 nz 功能

nz (column3, 0)
于 2008-09-26T16:28:07.907 回答
1

使用ISNULL替换命令:

 SELECT Column1, Column2, ISNULL(Column3, 0) + ISNULL(Column4, 0) AS [Added Values]FROM Table
于 2008-09-26T02:30:50.377 回答
1

VBA 中的 Nz() 函数可用于您的 MS Access 查询。

此函数将 NULL 替换为给定参数中的值。

SELECT Column1, Column2, Nz(Column3, 0) + Nz(Column4, 0) AS [Added Values]
FROM Table
于 2008-09-27T06:00:45.207 回答
1

在表定义中,将 Column3 和 Column4 的默认值设置为零,因此当在这些列中添加没有值的记录时,列值将为零。因此,您永远不必担心查询中的空值。

于 2014-10-28T17:59:55.353 回答
-1

使用 COALESCE。

SELECT 
   Column1, 
   Column2, 
   COALESCE(Column3, 0) + COALESCE(Column4, 0) AS [Added Values]
FROM Table
于 2008-09-26T12:30:00.333 回答