Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.17;
Скачать: CL | DM;

Вниз

Определение типа значения поля   Найти похожие ветки 

 
Avsam ©   (2003-01-30 11:56) [0]

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

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

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


 
roottim   (2003-01-30 12:12) [1]

посредством 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
Или что там


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

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


 
Avsam ©   (2003-01-30 12:20) [3]

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

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


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

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


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

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


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

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


 
Avsam ©   (2003-01-30 12:59) [7]

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


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

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

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

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

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

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

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


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




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

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

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



Страницы: 1 вся ветка

Текущий архив: 2003.02.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
14-53246
Vzlom
2003-02-01 12:35
2003.02.17
Помогите сделать локальный чат, если можно исходник


1-53066
Шоломицкий
2003-02-06 18:37
2003.02.17
Проблема с регионами!(


3-52736
Andriano
2003-01-30 13:30
2003.02.17
ParamByName в FIBDataSet


14-53254
Delphinium
2003-02-01 16:31
2003.02.17
Fast Report


3-52708
Z-man7777
2003-01-31 13:29
2003.02.17
Вопрос по созданию хранимой процедуре!