![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Неточный поиск IB [D7, IB6.x]
DimaF © (2004-03-23 07:58:00)IB Firebird 1.5 диалет 3. Друзья помогите.
в TTable былоа такая функция FindNearest неточный поиск.
перешол на IBX там ее нет. подскажите текс функции на SQL
IF (EXISTS(SELECT F_NOMER FROM TABL_1
WHERE (F_NOMER = :F_FIND_NOMER)))
не подходит (Ишит точные софпадения) :O(
Domkrat (2004-03-23 13:27:00) [1]>То Zacho
О нем и речь только глюкавый он. А статью сейчас почитаю.
>To Deniz, спасибо еще раз. Кайф.
Zacho (2004-03-23 13:16:00) [2]
> Domkrat © (23.03.04 12:56) [11]
> Ну коекому надо.
На самом деле - никому не надо. Заявляю, исходя из собственного опыта и здравого смысла :)
А если уж очень хочется (хотя, по-моему, такое не только бесполезно, но и вредно, лучше бы действительно удобный интерфейс без гридов с 10000 записей сделал) - см. http://www.ibase.ru/d_fibc.htm, gb_DataSets
Domkrat (2004-03-23 13:05:00) [3]2 Deniz
Спасибо щас попробую.
Deniz (2004-03-23 12:58:00) [4]> Domkrat © (23.03.04 12:42) [9]
select first 1 * from table where cast(MyIntegerField as varchar(20)) like 'что_ты_там_набрал' || '%'
makz (2004-03-23 12:58:00) [5]Value тогда должно быть между MIN(Field) и MAX(Field), иначе - нулл
Domkrat (2004-03-23 12:56:00) [6]Ну коекому надо. Привык народ так чтобы и туда и сюда и Locate
быстрый вот и приходиться выдумывать.
Johnmen (2004-03-23 12:48:00) [7]Мысли простые и всего 2 (две)
1. Такое кол-во строк никому не надо.
2. Locate
2прим. Прямое сканирование НД. При разумном кол-ве записей работает очень быстро.
Domkrat (2004-03-23 12:42:00) [8]Ув. мастера, у меня попутный вопрос.
Реально на SQL реализовать целочисленный поиск по такому принципу:
Набираем 2 получаем 22, если 2 отсутствует
или 222 если нет 2 и 22 и т.д.
Необходимо для быстрого позиционирования в DBGrid (100 000 строк)
Если можете поделитесь мыслями пожалуйста.
Johnmen (2004-03-23 11:51:00) [9]Минимальное отклонение (для численных типов)
SELECT * FROM Table
WHERE
(Value-Field) =
(SELECT MIN((SELECT MAX(Field) FROM Table)-Field) FROM Table)
Соловьев (2004-03-23 11:49:00) [10]ИМХО, сделай ХП и реализуй данный алгоритм.
Соловьев (2004-03-23 11:39:00) [11]а почему не 3?
DimaF (2004-03-23 11:18:00) [12]в таблице есть записи
1
3
5
7
10
15
начинаю искать 4 выдост 5.
максимально близкая запись.
TTable.FindNearest такая функция есть.
Zacho (2004-03-23 09:09:00) [13]О, боже !!! В конце концов, объясни, что такое "максимально приближенное " ?
И нафига для этого ХП ? (Кстати, не советую пользоваться TIBStoredProc, почему - смотри http://www.ibase.ru/devinfo/ibstp.htm)
Есть LIKE, CONTAINING, STARTING WITH .. Можно и еще варианты придумать.. Что именно тебе надо ? Объясни наконец нормально, тогда и нормальный ответ получишь.
И в любом случае тебе явно необходимо изучить какое-нибудь пособие по SQL (например, М.Грубер "SQL (бестселлер)" ) и Language Reference.
DimaF (2004-03-23 08:38:00) [14]нужно написать процедуру на SQL для Firebird 1.5 диалет 3.
чтобы она искала максимально приближенное значение в таблице по заданому полю а возврощяла все поля найденой строки.
а потом я через IBStoredProc значения задам и выташю.
часть моей прцедуры:
ишит точно :(
IF (EXISTS(SELECT F_NOMER FROM TABL_1
WHERE (F_NOMER = :F_FIND_NOMER)))
Zacho (2004-03-23 08:06:00) [15]Подробнее опиши что именно тебе надо. А то, мягко говоря, не совсем понятно.
LIKE ?
Или, если нужно искать в НД, Locate c loPartialKey ? Или что-то другое ?
makz (2004-03-23 08:05:00) [16]CONTAINING