Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Неточный поиск 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


Наверх

Титульная страница Поиск, карта сайта Написать письмо