Как найти повторяющиеся строковые значения, которые не совсем одинаковы, но похожи в 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
Кроме того, если вы не знакомы с основанием слов, это мощная концепция, которая также поможет вам увеличить поиск по вашему запросу.
Надеюсь, это поможет.