我有一个列名为company_name(string)的表,我需要找到此列的重复值,我不能使用distinct或group by,因为它们不完全相同。 例如:
atec,inc
atec inc
ate inc
abc group
abc groups
abc grups
我如何在sql中找到这样的条目,或者是否有任何ruby库。
答案 0 :(得分:1)
如果对变体有某种模式,你可以尝试使用正则表达式,MySQL似乎支持(我们使用Postgres,肯定会这样做):
http://dev.mysql.com/doc/refman/5.1/en/regexp.html
如果情况并非如此,我担心您必须在自己的应用中执行此操作。正如Pete所提到的,有各种各样的算法可以找到相似的声音,我们使用/已经使用了Levenshtein距离,Hamming的simhashes距离和KölnerPhonetic编码。
答案 1 :(得分:0)
我不知道SQL有一个SELECT WHERE A SORTA_OF_LIKE B但查找“Levenshtein距离”,也许是一种做出你想要的方式。
答案 2 :(得分:0)
这对于功能索引来说是一个完美的用法,但由于我认为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
此外,如果您不熟悉单词的词干,那么这个强大的概念也可以帮助您增加对搜索的检索。
希望有所帮助。