Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Определение типа значения поля [D6]


Avsam ©   (2003-01-30 11:56:00) 

База - Оракл.
Есть поле VarChar2(25)
В нем может стоять как число, так и строка.

Задача стоит такая, надо определить максимальное число в этом поле. Напрямую Max(Field) не работает, поскольку в поле есть и не числовые данные.

Как бы отсеять все нечисловые и произвести Max только чреди чисел. Конечно, нужно все сделать SQL-запросом.
Бьюсь уже больше часа.


Reindeer Moss Eater   (2003-01-30 14:23:00) [1]

Решение без циклов, но на клиенте:

1. Экземпляр TQuery (Select VeryStrangeField From Table)
2. Экземпляр TTable (STANDARD, TableName:="Table1" )
3. Table1.BatchMove(Query1,batCopy)
4. Экземпляр TQuery Select MAX(cast(VeryStrangeField as Numeric)) From Table1


Reindeer Moss Eater   (2003-01-30 13:28:00) [2]

Да чего тут определяться-то?
Для меня разницы особой нет, где я получу результат.

Дал тебе первый вариант решения. Не подошло. Нет прав.
Дал второй. "Довольно медленно"

Хочется его просто получить и побыстрее (без долгих переборов и вычислений).

Без вычислений не бывает чуда.

Одно ограничение - никаких хранимых функций и других новых объектов на сервере.
А как же с тезисом "Для меня разницы особой нет"???

SQL-запросом вижу не получается.
Может можно набором запросов это сделать?


Можно одним запросом и одним циклом



Avsam   (2003-01-30 12:59:00) [3]

Да чего тут определяться-то?
Для меня разницы особой нет, где я получу результат.
Хочется его просто получить и побыстрее (без долгих переборов и вычислений).
Одно ограничение - никаких хранимых функций и других новых объектов на сервере.
SQL-запросом вижу не получается.
Может можно набором запросов это сделать?


Reindeer Moss Eater   (2003-01-30 12:53:00) [4]

Ты определись сначала.
Где ты хочешь получать результат.
На сервере или на клиенте.
Волшебства-то все равно не бывает.


Avsam   (2003-01-30 12:35:00) [5]

Можно, конечно, все на клиента перенести.
Но тогда придется просто подряд просматривать все записи таблицы.
А это может быть довольно медленно.


Reindeer Moss Eater   (2003-01-30 12:23:00) [6]

Можно все вычисления на клиента перенести


Avsam   (2003-01-30 12:20:00) [7]

А вот бы без хранимых функций.
Просто я не имею права это делать.

Может возможно часть вычислений перенести на клиента в Delphi?


Reindeer Moss Eater   (2003-01-30 12:17:00) [8]

Хранимая функция, курсор, цикл, TO_NUMBER, обработка исключений, возврат результата


roottim   (2003-01-30 12:12:00) [9]

посредством SQL никак...
пишеш что-то типа

function ValidNumber(p_num varchar2) return number
is
Result number;
begin
Result := To_number(p_num);
Return Result;
exception
when others then return null;
end;

а дальше select * from where ValidNumber(myField) is notn null
Или что там


Наверх

Титульная страница Поиск, карта сайта Написать письмо