Проблема с null

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Bagdat
Сообщения: 19
Зарегистрирован: 12 апр 2005, 12:50

Проблема с null

Сообщение Bagdat » 25 апр 2005, 16:04

select sum(a.summa)+sum(b.summa) from...
Если одна из сумм =null, то возвращает сумму двух сум как null.
Короче x+null=null как избежать, подкажите плиз.
Заранее спасибо!

_so_
Сообщения: 144
Зарегистрирован: 04 ноя 2004, 22:17

Сообщение _so_ » 25 апр 2005, 16:13

Для IB использую спец UDF типа AsDouble
select AsDouble(sum(a.summa))+AsDouble(sum(b.summa)) from...

Bagdat
Сообщения: 19
Зарегистрирован: 12 апр 2005, 12:50

Сообщение Bagdat » 25 апр 2005, 16:36

Попробывал неполучается говорит что не знает AsDouble. Может потому что у меня Firebird

_so_
Сообщения: 144
Зарегистрирован: 04 ноя 2004, 22:17

Сообщение _so_ » 25 апр 2005, 16:44

Такую UDF написать нужно например:
DECLARE EXTERNAL FUNCTION ASDOUBLE
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'AsDouble' MODULE_NAME '<Твоя dll>';

function AsDouble(var Value: double): double;
begin
Result := Value;
end;

OX
Сообщения: 24
Зарегистрирован: 26 окт 2004, 17:08

Re: Проблема с null

Сообщение OX » 25 апр 2005, 17:02

Bagdat писал(а):select sum(a.summa)+sum(b.summa) from...
Если одна из сумм =null, то возвращает сумму двух сум как null.
Короче x+null=null как избежать, подкажите плиз.
Заранее спасибо!
Получи
select coalesce(sum(a.summa), 0)+coalesce(sum(b.summa), 0) from...
пока kdv не пришел и в Firebird_v1.5.ReleaseNotes.pdf тебя не отправил :D

Bagdat
Сообщения: 19
Зарегистрирован: 12 апр 2005, 12:50

Сообщение Bagdat » 26 апр 2005, 10:10

Спасибо! Все поличилось!!!

Ответить