Главная страница
    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.009 c
2-1151040130
Колобок
2006-06-23 09:22
2006.07.09
данамический массив


2-1151128286
JEK_DELPHI
2006-06-24 09:51
2006.07.09
Как можна из приложения запустить *.chm


15-1150040952
Yanis
2006-06-11 19:49
2006.07.09
А ваше чадо уже программирует?


2-1151223301
Urvin
2006-06-25 12:15
2006.07.09
SQL запрос


11-1129216963
Chum
2005-10-13 19:22
2006.07.09
Подмена функций





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