SQL Server - значение NULL в результатах вычислений в NULL Result - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть проблема, с которой, я уверен, все, кто работал с MSSQL, имели дело:

CREATE TABLE #temp (
    value1 DECIMAL(10,2)
    , value2 DECIMAL(10,2)
);

INSERT INTO #temp VALUES (1.00, NULL); 

SELECT value1 + value2 FROM #temp

Если я выполняю последний запрос value1 + value2, а не получаю ожидаемый результат (1.00), он возвращает NULL, когда одно из значений, которые я включаю в вычисление, равно NULL. Это вызывает всевозможные страдания в моих отчетах, потому что запрос не возвращает правильное значение, когда один из моих входных данных - NULL.

Есть ли обходной путь для вышеуказанного, чтобы получить ожидаемый результат 1.00 вместо NULL, так что второе значение NULL рассматривается как ноль?

Ответы [ 3 ]

0 голосов
/ 08 ноября 2018

Да. Вы можете использовать ISNULL(value2, 0).

например. select isnull(value1, 0) + isnull(value2, 0);

0 голосов
/ 08 ноября 2018

Добавление чего-либо к NULL приводит к NULL, потому что NULL неизвестен. Вы можете избежать этого, используя coalesce или ISNULL. Я чаще всего вижу это у людей, генерирующих строки, и они не ожидают значения NULL в поле.

CREATE TABLE #temp (
    value1 DECIMAL(10,2)
    , value2 DECIMAL(10,2)
);

INSERT INTO #temp VALUES (1.00, NULL); 

SELECT ISNULL(value1,0) + ISNULL(value2,0) FROM #temp
0 голосов
/ 08 ноября 2018
SELECT coalesce(value1,0) + coalesce(value2,0) FROM #temp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...