SQL. Сложение NULL и int.

saveliev_a

Есть 2 SQL запроса, возвращающих либо int, либо NULL.
Необходимо получить их сумму с условием, что если запрос вернул NULL, то считаем, что он вернул 0.
Проблема в том, что простое сложение не работает, потому как 50 + NULL = NULL. А надо получить 50.
Причем сделать это надо одним запросом. Как это можно сделать? Есть ли аналог тернарной операции в SQL?

timefim

isnull ?

Dasar

заботай функцию ifnull
в крайнем случае, заботай case ... when

saveliev_a

Спасибо! isnull - Именно то, что нужно!

rosali

еще sum с null-ами "правильно" работает...

saveliev_a

Если в столбце все значения NULL, то sum(NULL) тоже будет NULL. А это немного не то, что нужно. В общем, как уже говорил, isnull решил все вопросы.

anyba

кой нах isnull -- NVL!

Hastya

да
в сл Oracle

gopnik1994

coalesce более стандартная функция (и более гибкая к тому же чем isnull или NVL, которые есть не везде.

oleg701

+1 за coalesce, удобная штука

sergei1969

+1

zya369

+1

saveliev_a

Да, удобная вещь! И тебе спасибо.

bars71

На тему COALESCE.
Что будет выдано следующим кодом?
DECLARE @test VARCHAR(2)
DECLARE @first VARCHAR(4)
DECLARE @second VARCHAR(4)
SELECT @first = ISNULL(@test, 'test')
SELECT @second = COALESCE(@test, 'test')
PRINT @first
PRINT @second

saveliev_a

Не сразу ответил правильно, ибо не обратил внимания, что isnull возвращает тот же тип, что и проверяемое значение.
ISNULL ( check_expression , replacement_value )
Return Types
Returns the same type as check_expression.
Оставить комментарий
Имя или ник:
Комментарий: