Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.09;
Скачать: CL | DM;

Вниз

Как искать?   Найти похожие ветки 

 
msainc   (2006-06-19 14:20) [0]

Есть база (порядка 500 000 записей) в которой хранятся фамилии людей. Как сделать в программе поиск, без учёта букв Е и Ё. Т. е. если я ввёл фамилию Семёнов - то программа должна выбрать из базы фамилии как Семёнов так и Семенов. То же самое если ввёл Семенов - должна найти как Семенов так и Семёнов. Подскажите пожалуйста.


 
StriderMan ©   (2006-06-19 14:25) [1]

SELECT * FROM TABLE WHERE (NAME = "Семёнов") OR (NAME = "Семeнов")


 
StriderMan ©   (2006-06-19 14:27) [2]

а если серьезно то напиши хранимую процедуру, которая в ячейке все Ё на Е преобразует, и используй в запросе только Е


 
msainc   (2006-06-19 14:33) [3]

В том то и дело. Если я ввёл Семенов - как программа узнает какую букву Е надо заменить на Ё чтобы получить Семёнов?
Вот в чём вопрос. Были советы привести к нормальному виду - т.е. В введённом тексте заменить все Ё на Е и в базе то же самое и сравнивать, но искать фамилии где встречается Ё а потом их заменять на Е долго. Нет ли других способов?


 
evvcom ©   (2006-06-19 14:35) [4]

Дык, а ты в базу пиши уже с "Е"


 
StriderMan ©   (2006-06-19 14:38) [5]

да, прошурши всю базу, поменяй в ней Е на Ё и будет счастье.

ЗЫ: а Ё отверткой выковыряй из клавы


 
msainc   (2006-06-19 14:40) [6]

Вся эта фигня нужна только для поиска, а выбирать данные он должен такими какими они и были, т.е. Написал Семенов - Получил записи: Семенов, Семёнов и тп. т.е. перебить во всей базе Е на Ё нельзя.


 
Сергей М. ©   (2006-06-19 14:42) [7]

Фтопку такую базу


 
Zz_   (2006-06-19 14:44) [8]

declare @t table (A varchar(10) collate Cyrillic_General_CI_AS)

insert into @t select "Семёнов"
    union all select "Семенов"

select * from @t where A = "Семенов"
select * from @t where A = "Семёнов"
select * from @t where A = "Семенов" collate Cyrillic_General_CI_AI
select * from @t where A = "Семёнов" collate Cyrillic_General_CI_AI


 
msainc   (2006-06-19 14:46) [9]

вариант хороший но это же не только для Семёнов. Также могут ввести и Королёв и т.п. или вобще фамилию без Ё или Е


 
ANB ©   (2006-06-19 14:46) [10]


> msainc   (19.06.06 14:40) [6]

Млин. Заведи еще одно поле, куда клади фамилию с буквой Е вместо Ё. Заодно переведи в верхний регистр. Ищи по этому полю, а возвращай исходное. Проще всего повесить на таблицу триггер, который будет заполнять служебное поле.


 
sniknik ©   (2006-06-19 15:07) [11]

SELECT * FROM TABLE WHERE NAME LIKE "Сем[е-ё]нов"

хотя, [1]  будет наверное быстрее при индексном поиске. (проверить надо, сдесь он тоже может использоваться )


 
Desdechado ©   (2006-06-19 15:34) [12]

СУБД не указана, а жаль
тогда бы ответы были конструктивнее

например, для Оракла можно завести Function-based index, в котором будут только Е без Ё
и искать можно по нему (очень быстро), а хранить - как хочешь



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

Текущий архив: 2006.07.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
1-1148300012
Schooler
2006-05-22 16:13
2006.07.09
Как правильно реализовать эффект


9-1131856367
dfgd
2005-11-13 07:32
2006.07.09
Простой физический движок.


3-1147248086
Zergik
2006-05-10 12:01
2006.07.09
Помогите с сохранением информации в БД InterBase (Delphi)


3-1147352502
wirg
2006-05-11 17:01
2006.07.09
Filter


2-1151031762
nickhilo
2006-06-23 07:02
2006.07.09
Компонент RichEdit с полноценной поддержкой формата RTF.