Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как бороться с NULL ? / 13 сообщений из 13, страница 1 из 1
07.09.2005, 12:41
    #33256085
Perederiy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бороться с NULL ?
в таблице 3 числовых поля
p1 34
p2 null
p3 1
делаю sum по этим полям - дает сумму 0
если изменяю null на 0 - сумма 35
те он при встрече null обнуляет всю сумму
Как с этим бороться ?
...
Рейтинг: 0 / 0
07.09.2005, 13:13
    #33256199
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бороться с NULL ?
Perederiyв таблице 3 числовых поля
p1 34
p2 null
p3 1
делаю sum по этим полям - дает сумму 0
если изменяю null на 0 - сумма 35
те он при встрече null обнуляет всю сумму
Как с этим бороться ?

На 8 вроде считает номано....


с уважением
(круглый)
...
Рейтинг: 0 / 0
07.09.2005, 13:26
    #33256244
Perederiy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бороться с NULL ?
у меня 8.0.1
...
Рейтинг: 0 / 0
07.09.2005, 13:34
    #33256283
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бороться с NULL ?
С помощью функции coalesce.

http://www.postgresql.org/docs/8.0/static/functions-conditional.html
...
Рейтинг: 0 / 0
07.09.2005, 13:37
    #33256296
landy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бороться с NULL ?
Perederiyв таблице 3 числовых поля
p1 34
p2 null
p3 1
делаю sum по этим полям - дает сумму 0
если изменяю null на 0 - сумма 35
те он при встрече null обнуляет всю сумму
Как с этим бороться ?
Он просто делает следующее
к ничему прибавляет все что угодно - результат ничего
сделай это поле NOT NULL default 0;
Тогда у тебя NULL не будут появляться
...
Рейтинг: 0 / 0
07.09.2005, 13:41
    #33256321
Perederiy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бороться с NULL ?
насчет
coalesce
хелп открыт
но мона подробнее и с примером
Спасибо
...
Рейтинг: 0 / 0
07.09.2005, 14:29
    #33256492
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бороться с NULL ?
Perederiyмона подробнее и с примеромselect coalesce(p1,0)+coalesce(p2,0)+coalesce(p3,0)
...
Рейтинг: 0 / 0
08.09.2005, 11:37
    #33258188
а
а
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бороться с NULL ?
а
Sum(p1) + Sum(p2) + Sum(p3)
вместо
Sum(p1 + p2 + p3)
разве неправильно посчитает?
...
Рейтинг: 0 / 0
09.09.2005, 03:46
    #33260094
фффф
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бороться с NULL ?
аа
Sum(p1) + Sum(p2) + Sum(p3)
вместо
Sum(p1 + p2 + p3)
разве неправильно посчитает?
А какая разница, в каком месте NULL сложится с числом? Результатом всегда будет NULL.
coalesce() всегда надо пользовать, если уж данные нуллабельны.
...
Рейтинг: 0 / 0
09.09.2005, 20:56
    #33262243
Как бороться с NULL ?
фффф А какая разница, в каком месте NULL сложится с числом? Результатом всегда будет NULL. coalesce() всегда надо пользовать, если уж данные нуллабельны.а проверить?
Код: plaintext
1.
2.
3.
4.
5.
SELECT SUM(a),SUM(b)
FROM
(SELECT  1 . 5  as a, NULL as b
UNION
SELECT NULL, 3 . 1415 ) AS foo
 1 . 5 ; 3 . 1415 

вотушш девствительно, как в лужу дунул
...
Рейтинг: 0 / 0
12.09.2005, 13:35
    #33264042
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бороться с NULL ?
а проверить.......а проверить?....

вот и я о том же...
в самом верху ышо написал - вроде считает...версию привёл...
кхм...странно всё это...может весь сиквол запрос в студию ?


с уважением
(круглый)
...
Рейтинг: 0 / 0
13.09.2005, 03:16
    #33265276
фффф
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как бороться с NULL ?
а проверитьа проверить?
Код: plaintext
1.
2.
3.
4.
SELECT SUM(a)+SUM(b)
FROM
(SELECT  1 . 5  as a, NULL::float as b
UNION
SELECT NULL,NULL::float) AS foo
Даешь гарантию, что в каждом столбце выборки всегда будет хоть одно непустое значение?
...
Рейтинг: 0 / 0
13.09.2005, 19:45
    #33267401
Как бороться с NULL ?
фффф а проверитьа проверить?
Код: plaintext
1.
2.
3.
4.
SELECT SUM(a)+SUM(b)
FROM
(SELECT  1 . 5  as a, NULL::float as b
UNION
SELECT NULL,NULL::float) AS foo
Даешь гарантию, что в каждом столбце выборки всегда будет хоть одно непустое значение?Это 8-ка? (проверять лома, поверю)
Но тогда достаточно
SELECT COALESCE(Sum(a),0)) + COALESCE(Sum(b),0))...


ЗЫЫ - но вот что интересно - лучше один вызов нескольких COALESCE на весь запрос и несколько Sum по столбцам - на каждую запись, или же один Sum и несколько COALESCE на каждую запись?
Конечно потестю при случае, но могабыть есть теоретические соображения?
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как бороться с NULL ? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]