Главная страница
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.025 c
1-53086
Романов Р.В.
2003-02-06 21:21
2003.02.17
Shell Object


1-53050
Альф
2003-02-06 15:20
2003.02.17
Мастера - подскажите о raise ?


1-53067
Viktor1
2003-02-05 13:11
2003.02.17
Что делать, чтобы убрать сообщение пояляется только при Build -


3-52797
ANDR
2003-01-30 19:31
2003.02.17
Фильтрация <B>FIBDataSet</B>


1-52819
SinnerPro
2003-02-07 07:14
2003.02.17
Удаление файла