Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Какая функция в SQL конвертирует Null в ноль? 
:(
    Опции темы
sonyi
Дата 16.3.2009, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 14.3.2009

Репутация: нет
Всего: нет



А как тогда быть если в селекте хочу просумировать суму нескольких полей < Sum(Sum(A1)+Sum(A2)+Sum(A3)) >, а одна из A=0 то результат тоже 0?
PM MAIL   Вверх
former
Дата 16.3.2009, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 7
Всего: 17



Цитата(sonyi @  16.3.2009,  20:57 Найти цитируемый пост)
А как тогда быть если в селекте хочу просумировать суму нескольких полей < Sum(Sum(A1)+Sum(A2)+Sum(A3)) >, а одна из A=0 то результат тоже 0? 

Почему ноль? Это же  сумма!  1+0=1 smile 


Это сообщение отредактировал(а) former - 16.3.2009, 21:00


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
sonyi
Дата 16.3.2009, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 14.3.2009

Репутация: нет
Всего: нет



Это правда. Но если при сумме поля А1 имеется хоть один ноль то вся сумма будет 0 (вроде)
PM MAIL   Вверх
former
Дата 16.3.2009, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 7
Всего: 17



sonyi, Null - это не ноль, а метка о том, что данные в ячейке отсутствуют. При суммировании они просто прибавляться не будут, т.е. фактически будут возвращать ноль (с точки зрения математики).

Добавлено через 2 минуты и 14 секунд
Цитата(sonyi @  16.3.2009,  20:57 Найти цитируемый пост)
Sum(Sum(A1)+Sum(A2)+Sum(A3)) >, а одна из A=0 то результат тоже 0? 

А - это что, поле?
Цитата(sonyi @  16.3.2009,  21:04 Найти цитируемый пост)
Но если при сумме поля А1 имеется хоть один ноль то вся сумма будет 0 (вроде) 

Это только в том случае, если все строки в А - Null или значения в них равны нулю


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
sonyi
Дата 16.3.2009, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 14.3.2009

Репутация: нет
Всего: нет



select Data, A1+A2+A3+A4 as suma
from aa
where Data BETWEEN "01.02.2009" AND "28.02.2009"
//---------------------------

A1..A4 numeric
Если хоть один из А1..А4 пустой(Null) то поле suma пустая. Вот токое у меня

Добавлено @ 21:21
В SQL-ле работает функция ISNULL(A1,0) а в Делфи нет.

Это сообщение отредактировал(а) sonyi - 16.3.2009, 22:47
PM MAIL   Вверх
Kbl4AH
Дата 16.3.2009, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 6
Всего: 15



Цитата(sonyi @  16.3.2009,  21:20 Найти цитируемый пост)
В SQL-ле работает функция ISNULL(A1,0) а в Делфи нет.

сильно сказано! я бы сказал, что она работает в Transact-SQL...
Т.к., например, в PL/SQL другая функция - nvl(field, value)

Это сообщение отредактировал(а) Kbl4AH - 16.3.2009, 23:46
PM MAIL ICQ   Вверх
sonyi
Дата 13.4.2009, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 14.3.2009

Репутация: нет
Всего: нет



А какой язык SQL используется в TQuery подключенной к таблице Paradox? Потому что некоторые встроеные функции SQL не работают.
PM MAIL   Вверх
Akella
Дата 13.4.2009, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



SQL92?

Добавлено через 1 минуту и 52 секунды
Только что заглянул в справку по BDE
Цитата

For more specific information about the BDE implementation of the SQL-92 specification


Добавлено через 2 минуты и 20 секунд
Цитата

What is local SQL?

Local SQL is the subset of the SQL-92 specification used to access dBASE, Paradox, and FoxPro tables. On receving local SQL statements from front-end applications, the Borland Database Engine (BDE) translates the statements into BDE API functions.

The local SQL language set

The SQL statements fall into two categories: Data Manipulation Language (DML) and Data Definition Language (DDL).

DML consists of SQL statements used for retrieving, inserting, updating, and deleting table data. SELECT is a DML statement.

DDL consists of SQL statements used for creating, altering, and deleting tables, and for creating and deleting indexes. CREATE TABLE and DROP INDEX are DDL statements.

For a complete introduction to ANSI-standard SQL, see one of the many available third-party books. 



Добавлено через 3 минуты и 13 секунд
Цитата(sonyi @  13.4.2009,  20:21 Найти цитируемый пост)
Потому что некоторые встроеные функции SQL не работают. 

Какие именно, религия не позволяет написать? Мало того, встроенные куда?

Это сообщение отредактировал(а) Akella - 13.4.2009, 21:18
PM MAIL   Вверх
sonyi
Дата 13.4.2009, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 14.3.2009

Репутация: нет
Всего: нет



Цитата(Akella @ 13.4.2009,  19:18)

Какие именно, религия не позволяет написать? Мало того, встроенные куда?

Ну например ISNULL().

PM MAIL   Вверх
Kbl4AH
Дата 13.4.2009, 22:33 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 6
Всего: 15



Цитата(sonyi @  13.4.2009,  22:48 Найти цитируемый пост)
Ну например ISNULL().

Хм, интересный ты... А почему это в парадоксе должна работать функция из sql сервера (язык Transact-SQL, как я уже говорил выше)???

ЗЫ. Частенько для функций одного языка есть анлогичные функции для других языков...
Цитата

COALESCE (V1, V2) эквивалентно следующему: CASEWHENV1 ISNOTNULLTHENV1 ELSEV2 END. 
COALESCE (V1, V2, . . . ,n) для n >= 3 эквивалентно CASEWHENV1 ISNOTNULLTHENV1 ELSECOALESCE (V2, . . . ,n) END.
© Язык баз данных SQL/92

PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1210 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.