SQL Null设置为Zero以进行添加

时间:2008-09-26 02:26:03

标签: sql ms-access database-design

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

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

其中Column3或Column4可以为null。在这种情况下,我希望将null视为零(所以4 + null = 4, null + null = 0)。

有关如何实现这一目标的任何建议吗?

7 个答案:

答案 0 :(得分:13)

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

SELECT Column1, Column2, IIF(ISNULL(Column3),0,Column3) + IIF(ISNULL(Column4),0,Column4) AS [Added Values]
FROM Table

答案 1 :(得分:4)

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

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

答案 2 :(得分:2)

甚至更干净的是nz功能

nz (column3, 0)

答案 3 :(得分:1)

使用 ISNULL 替换命令:

 SELECT Column1, Column2, ISNULL(Column3, 0) + ISNULL(Column4, 0) AS [Added Values]FROM Table

答案 4 :(得分:1)

VBA中的Nz()函数可以在MS Access查询中使用。

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

SELECT Column1, Column2, Nz(Column3, 0) + Nz(Column4, 0) AS [Added Values]
FROM Table

答案 5 :(得分:1)

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

答案 6 :(得分:-1)

使用COALESCE。

SELECT 
   Column1, 
   Column2, 
   COALESCE(Column3, 0) + COALESCE(Column4, 0) AS [Added Values]
FROM Table