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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.011 c
3-1147255459
samalex
2006-05-10 14:04
2006.07.09
Зависание Firebird


2-1150812270
resuS
2006-06-20 18:04
2006.07.09
модуль для работы с динамическими типами данных


2-1151035731
Mir
2006-06-23 08:08
2006.07.09
Выполнение команды через shellexecute


1-1148925058
VitaWED
2006-05-29 21:50
2006.07.09
ListView + кнопки


2-1150435479
nickmas
2006-06-16 09:24
2006.07.09
Вопрос по COM: как обратиться серверу к клиенту?





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