Форум: "Базы";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
ВнизНепонятное суммирование в IB в storedprocedure Найти похожие ветки
← →
Rule © (2004-09-21 11:34) [0]Возникла интересная ситуация
допустим у меня есть таблица
Table1:
CREATE TABLE TABLE1 (
F1 INTEGER,
F2 INTEGER);
и забиты такие значения:
1 2
2 3
4 null
так вот если выполнить запрос типа:
select sum(F2) from table1 то выдает 5, тоесть 2+3+null=5
а если в хранимой процедуре выполним вот так:
Sum1=0;
Sum2=0;
for select f1, f2
from table1
into :F1, :F2
do
begin
Sum1=Sum1+F1;
Sum2=Sum2+F2;
end
то результатом выполнения будет
sum1=7, sum2=null
при отладке на шаге при котором перебот доходит до значения null значение суммы равен null
таким образом мы получаем что любое значение плюс null равно null, а почему тогда sum(F2) не равно null
← →
Rule © (2004-09-21 11:35) [1]вопрос забыл :), объясните пожалуйста почему так происходит, почему сум выдает не нулл а сложение перебором выдает нул
← →
Johnmen © (2004-09-21 11:40) [2]Потому, что N+null всегда равно null.
Но агрегатная ф-ия SUM учитывает это.
← →
jack128 © (2004-09-21 11:41) [3]Rule © (21.09.04 11:35) [1]
потому что так сделано :-) Агрегаты НЕ учитывают null при вычислении, вот простые операции (+, -, /, || и тд ) - учитывают.
← →
Rule © (2004-09-21 11:43) [4]Понятно, а думал глюк какой-то
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.027 c