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

Вниз

Неточный поиск IB   Найти похожие ветки 

 
DimaF ©   (2004-03-23 07:58) [0]

IB Firebird 1.5 диалет 3. Друзья помогите.
в TTable былоа такая функция FindNearest неточный поиск.
перешол на IBX там ее нет. подскажите текс функции на SQL
IF (EXISTS(SELECT F_NOMER FROM TABL_1
WHERE (F_NOMER = :F_FIND_NOMER)))

не подходит (Ишит точные софпадения) :O(


 
makz   (2004-03-23 08:05) [1]

CONTAINING


 
Zacho ©   (2004-03-23 08:06) [2]

Подробнее опиши что именно тебе надо. А то, мягко говоря, не совсем понятно.
LIKE ?
Или, если нужно искать в НД, Locate c loPartialKey ? Или что-то другое ?


 
DimaF ©   (2004-03-23 08:38) [3]

нужно написать процедуру на SQL для Firebird 1.5 диалет 3.
чтобы она искала максимально приближенное значение в таблице по заданому полю а возврощяла все поля найденой строки.
а потом я через IBStoredProc значения задам и выташю.
часть моей прцедуры:

IF (EXISTS(SELECT F_NOMER FROM TABL_1
WHERE (F_NOMER = :F_FIND_NOMER)))
 ишит точно :(


 
Zacho ©   (2004-03-23 09:09) [4]

О, боже !!! В конце концов, объясни, что такое "максимально приближенное " ?
И нафига для этого ХП ? (Кстати, не советую пользоваться TIBStoredProc, почему - смотри http://www.ibase.ru/devinfo/ibstp.htm )

Есть LIKE, CONTAINING, STARTING WITH .. Можно и еще варианты придумать.. Что именно тебе надо ? Объясни наконец нормально, тогда и нормальный ответ получишь.

И в любом случае тебе явно необходимо изучить какое-нибудь пособие по SQL (например, М.Грубер "SQL (бестселлер)" ) и Language Reference.


 
DimaF ©   (2004-03-23 11:18) [5]

в таблице есть записи
1
3
5
7
10
15  
начинаю искать 4 выдост 5.
максимально близкая запись.
TTable.FindNearest такая функция есть.


 
Соловьев ©   (2004-03-23 11:39) [6]

а почему не 3?


 
Соловьев ©   (2004-03-23 11:49) [7]

ИМХО, сделай ХП и реализуй данный алгоритм.


 
Johnmen ©   (2004-03-23 11:51) [8]

Минимальное отклонение (для численных типов)
SELECT * FROM Table
WHERE
 (Value-Field) =
 (SELECT MIN((SELECT MAX(Field) FROM Table)-Field) FROM Table)


 
Domkrat ©   (2004-03-23 12:42) [9]

Ув. мастера, у меня попутный вопрос.

Реально на SQL реализовать целочисленный поиск по такому принципу:

Набираем 2 получаем 22, если 2 отсутствует
или 222 если нет 2 и 22 и т.д.

Необходимо для быстрого позиционирования в DBGrid (100 000 строк)
Если можете поделитесь мыслями пожалуйста.


 
Johnmen ©   (2004-03-23 12:48) [10]

Мысли простые и всего 2 (две)
1. Такое кол-во строк никому не надо.
2. Locate
2прим. Прямое сканирование НД. При разумном кол-ве записей работает очень быстро.


 
Domkrat ©   (2004-03-23 12:56) [11]

Ну коекому надо. Привык народ так чтобы и туда и сюда и Locate
быстрый вот и приходиться выдумывать.


 
Deniz ©   (2004-03-23 12:58) [12]

> 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) [13]

Value тогда должно быть между MIN(Field) и MAX(Field), иначе - нулл


 
Domkrat ©   (2004-03-23 13:05) [14]

2 Deniz
Спасибо щас попробую.


 
Zacho ©   (2004-03-23 13:16) [15]


> Domkrat ©   (23.03.04 12:56) [11]
> Ну коекому надо.

На самом деле - никому не надо. Заявляю, исходя из собственного опыта и здравого смысла :)
А если уж очень хочется (хотя, по-моему, такое не только бесполезно, но и вредно, лучше бы действительно удобный интерфейс без гридов с 10000 записей сделал) - см. http://www.ibase.ru/d_fibc.htm, gb_DataSets


 
Domkrat ©   (2004-03-23 13:27) [16]

>То Zacho
О нем и речь только глюкавый он. А статью сейчас почитаю.
>To Deniz, спасибо еще раз. Кайф.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.033 c
6-1076491996
Iks
2004-02-11 12:33
2004.04.18
Отправить письмо со вложенной ссылкой ???


14-1080498979
ikivio
2004-03-28 22:36
2004.04.18
Просто устал


6-1076910895
Guest
2004-02-16 08:54
2004.04.18
Сеть и пакет


7-1077289878
Cerber
2004-02-20 18:11
2004.04.18
Работа с клавишами


1-1080729635
010101001010001010101001
2004-03-31 14:40
2004.04.18
ТЕКСТ





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский