Как найти повторяющиеся строковые значения, которые не совсем одинаковы, но похожи в SQL

У меня есть таблица с именем столбца company_name(строка), мне нужно найти повторяющиеся значения этого столбца, я не могу использовать различные или группировать, потому что они не совсем одинаковы. Например:

atec,inc
atec inc
ate inc  

abc group
abc groups
abc grups

Как я могу найти такие записи в SQL или есть какие-либо рубиновые библиотеки для этого.

3 ответа

Если есть какие-то паттерны для вариантов, вы можете попробовать использовать регулярные выражения, которые MySQL поддерживает (мы используем Postgres, который определенно поддерживает):

http://dev.mysql.com/doc/refman/5.1/en/regexp.html

Если это не так, боюсь, вам придется сделать это в своем приложении. Как упоминал Пит, существуют различные алгоритмы для поиска похожих звуков, мы используем / использовали расстояние Левенштейна, расстояния Хемминга симаш и фонетическое кодирование Кёльнера для этой цели.

Я не знаю, что в SQL есть SELECT WHERE A SORTA_OF_LIKE B, но посмотрите "Расстояние Левенштейна", возможно, способ сделать "что угодно".

Это было бы идеальным использованием для функционального индекса, но, поскольку я не думаю, что в MySQL есть один из них, могу ли я предложить Полнотекстовый поиск в MySQL?

http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html

Конкретно логический поиск:

http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html

Кроме того, если вы не знакомы с основанием слов, это мощная концепция, которая также поможет вам увеличить поиск по вашему запросу.

Надеюсь, это поможет.

Другие вопросы по тегам