Текущий архив: 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.46 MB
Время: 0.008 c