我有一个SQL查询(MS Access),我需要添加两列,其中任何一列都可以为null。例如:
SELECT Column1, Column2, Column3+Column4 AS [Added Values]
FROM Table
其中Column3或Column4可以为null。在这种情况下,我希望将null视为零(所以4 + null = 4, null + null = 0
)。
有关如何实现这一目标的任何建议吗?
答案 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