andie Posted August 5, 2003 Report Share Posted August 5, 2003 Люди добрые, помогите пожалуйста, может кто слышал про такие программы в инете или знает как самостоятельно разработать модуль. Как можно найти в БД повторяющиеся записи, причем введены они могут быть по-разному, т.е. поиск не в лоб одинаковых записей, а по словоформам. Поиск только по одному полю.. НО.. Например, название может быть написано слитно или через дефис. Очень сложно найти такие записи.. Искренне оценю любую помощь.. Link to comment Share on other sites More sharing options...
dartman Posted August 5, 2003 Report Share Posted August 5, 2003 (edited) andie Буквально неделю назад мне пришлось нечто подобное писать, правда у меня поля повторялись точно. Твои условия название может быть написано слитно или через дефис очень осложняют задачу, ты прав.... Даже сходу и не придумаешь, как это сделать. Найдёшь алгоритм - кинь сюда исходник, если не затруднит. Мне тоже интересно.Хотя..... Насчёт дефиса - это поправимо. Берём нашу базу и копируем её в другую (чтобы исходную не повредить :(). Далее в цикле до последней записи в нужном нам поле ищем подстроку "-" и удаляем её нафиг. Всё, дефисы маст дай. Задача упрощается. Таким же макаром приводим все символы к одному регистру (тут уже многое зависит от возможностей конкретного языка программирования; есть ли там подобные функции, или придётся ручками...). Задача приводится к божескому виду. У нас НЕТ дефисов, все символы в одном регистре. Как в пределах одной базы найти дубликаты, я думаю ты разберёшься. Если что - пиши, скину свой алгоритм. Edited August 5, 2003 by dartman Link to comment Share on other sites More sharing options...
msengine Posted August 6, 2003 Report Share Posted August 6, 2003 добавлю что для сравнения строк необходимо еще вычистить все пробелы и управляющие символы (новая строка, перевод каретки и т.д.). далее совсем просто. SELECT DISTINCT * FROM my_DB выбираем уникальные записи, соотв. все остальное лишнее. Как адресовать SQL запрос, для любого типа БД я думаю обьяснять не надо ? Link to comment Share on other sites More sharing options...
AlexA Posted August 30, 2003 Report Share Posted August 30, 2003 SELECT * FROM DB WHERE field LIKE (string1*string2); Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now