Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Поиск по полям char и varchar / 5 сообщений из 5, страница 1 из 1
28.03.2004, 20:07
    #32459911
Поиск по полям char и varchar
Привет всем!
Помогите решить проблему.
Есть таблица с очень большим (около 1 000 000 записей) кол-вом записей
например create table "CHAR_DATA" (Name char(100),...) кодировка Win1251
наполнение русскими и английскими словами
1.Пользователям необходимо делать поиск по полю Name без учета регистра букв. Как создать такой индекс?
2.Очень часто пользователи вводят только начало слова, а select должен выдать все записи, в которых начало слова (первые введенные буквы) совпадают, а на остальные по фигу. Как создать такой select?

Все должно работать очень быстро, т.е. по индексам. Полный перебор таблицы невозможен!!!

Ответы можете присылать на e-mail: Fox_Nicol@list.ru
...
Рейтинг: 0 / 0
29.03.2004, 14:02
    #32460663
valich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по полям char и varchar
Это конечно зависит, откуда ты работаешь, в Delphi вроде бы так:

select name
from char_data
where upper(name) containing "поисковое значение"

А поисковое значение предварительно в клиенте переводишь в верхний регистр...
...
Рейтинг: 0 / 0
29.03.2004, 14:10
    #32460683
FreemanZAV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по полям char и varchar
Создай еще одно поле, в котором данные будут содержаться в верхнем регистре (ну и триггер конечно) и проиндексируй. Только учти ограничение длины CHAR поля для индексов (80 символов кажется)
...
Рейтинг: 0 / 0
29.03.2004, 14:12
    #32460686
vovan1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по полям char и varchar
При таком запросе не используются индексы!
...
Рейтинг: 0 / 0
29.03.2004, 14:28
    #32460731
FreemanZAV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск по полям char и varchar
Если по первым символам поиск, то делай так:

select name
from char_data
where upp_name starting upper("поисковое значение", COLLATE
PXW_CYRL)

Нужно использовать именно starting, а не containing. Конечно в поле upp_name должны содержаться данные в верхнем регистре.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Поиск по полям char и varchar / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]