SQL Null для Zero для добавления

У меня есть запрос SQL (MS Access), и мне нужно добавить два столбца, каждый из которых может быть нулевым. Например:

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

где Column3 или Column4 могут иметь значение NULL. В этом случае я хочу, чтобы значение null считалось нулевым (так 4 + null = 4, null + null = 0).

Любые предложения относительно того, как это сделать?

Ответ 1

Так как ISNULL in Access является логической функцией (один параметр), используйте ее следующим образом:

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

Ответ 2

Согласно Аллену Брауну, самый быстрый способ - использовать IIF(Column3 is Null; 0; Column3) потому что и NZ() и ISNULL() являются функциями VBA, а вызов функций VBA замедляет запросы JET.

Я также хотел бы добавить, что если вы работаете со связанными таблицами SQL Server или Oracle, синтаксис IIF также является запросом, который должен быть выполнен на сервере, а это не тот случай, если вы используете функции VBA.

Ответ 3

Еще более чистым будет функция nz

nz (column3, 0)

Ответ 4

Используйте команду замены ISNULL:

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

Ответ 5

Функция Nz() из VBA может использоваться в запросе MS Access.

Эта функция заменяет значение NULL для значения в данном параметре.

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

Ответ 6

В определении таблицы установите значение по умолчанию для столбца 3 и столбца 4 равным нулю, поэтому, когда запись добавляется без значения в этих столбцах, значение столбца будет равно нулю. Поэтому вам никогда не придется беспокоиться о нулевых значениях в запросах.

Ответ 7

Используйте COALESCE.

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