Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.02.17;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.01 c
1-52825
super_alex
2003-02-07 12:05
2003.02.17
Помогите с TImage


1-52939
Yarmak_Sergey
2003-02-08 13:10
2003.02.17
Разработка компонента


1-52922
SergeySS
2003-02-08 20:47
2003.02.17
Need Help!!!!!!!!!!


1-52916
_Student_
2003-02-08 17:56
2003.02.17
Помогите с заменой слова в строке.


14-53275
Nick_N_A
2003-01-16 07:59
2003.02.17
CHM





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский