SQL Null установлен в ноль для добавления - PullRequest
10 голосов
/ 26 сентября 2008

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

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

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

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

Ответы [ 7 ]

13 голосов
/ 26 сентября 2008

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

SELECT Column1, Column2, IIF(ISNULL(Column3),0,Column3) + IIF(ISNULL(Column4),0,Column4) AS [Added Values]
FROM Table
4 голосов
/ 28 марта 2011

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

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

2 голосов
/ 26 сентября 2008

Даже чище будет функция nz

nz (column3, 0)
1 голос
/ 28 октября 2014

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

1 голос
/ 27 сентября 2008

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

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

SELECT Column1, Column2, Nz(Column3, 0) + Nz(Column4, 0) AS [Added Values]
FROM Table
1 голос
/ 26 сентября 2008

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

 SELECT Column1, Column2, ISNULL(Column3, 0) + ISNULL(Column4, 0) AS [Added Values]FROM Table
0 голосов
/ 26 сентября 2008

Использовать COALESCE.

SELECT 
   Column1, 
   Column2, 
   COALESCE(Column3, 0) + COALESCE(Column4, 0) AS [Added Values]
FROM Table
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...