我有一个 SQL 查询(MS Access),我需要添加两列,其中任何一列都可能为空。例如:
SELECT Column1, Column2, Column3+Column4 AS [Added Values]
FROM Table
其中 Column3 或 Column4 可能为空。在这种情况下,我希望 null 被视为零(so 4 + null = 4, null + null = 0
)。
关于如何做到这一点的任何建议?
我有一个 SQL 查询(MS Access),我需要添加两列,其中任何一列都可能为空。例如:
SELECT Column1, Column2, Column3+Column4 AS [Added Values]
FROM Table
其中 Column3 或 Column4 可能为空。在这种情况下,我希望 null 被视为零(so 4 + null = 4, null + null = 0
)。
关于如何做到这一点的任何建议?
由于 Access 中的 ISNULL 是一个布尔函数(一个参数),因此像这样使用它:
SELECT Column1, Column2, IIF(ISNULL(Column3),0,Column3) + IIF(ISNULL(Column4),0,Column4) AS [Added Values]
FROM Table
根据Allen Browne的说法,最快的方法是使用IIF(Column3 is Null; 0; Column3)
,因为NZ()
和ISNULL()
都是 VBA 函数,调用 VBA 函数会减慢 JET 查询的速度。
我还要补充一点,如果您使用链接的 SQL Server 或 Oracle 表,IIF 语法也是要在服务器上执行的查询,如果您使用 VBA 函数则不是这种情况。
更清洁的是 nz 功能
nz (column3, 0)
使用ISNULL替换命令:
SELECT Column1, Column2, ISNULL(Column3, 0) + ISNULL(Column4, 0) AS [Added Values]FROM Table
VBA 中的 Nz() 函数可用于您的 MS Access 查询。
此函数将 NULL 替换为给定参数中的值。
SELECT Column1, Column2, Nz(Column3, 0) + Nz(Column4, 0) AS [Added Values]
FROM Table
在表定义中,将 Column3 和 Column4 的默认值设置为零,因此当在这些列中添加没有值的记录时,列值将为零。因此,您永远不必担心查询中的空值。
使用 COALESCE。
SELECT
Column1,
Column2,
COALESCE(Column3, 0) + COALESCE(Column4, 0) AS [Added Values]
FROM Table