我有一个列名为company_name(字符串)的表,我需要找到此列的重复值,我不能使用distinct或group by因为它们不完全相同。 如:如何找到重复的字符串值,其中不完全相同,但在SQL中相似
atec,inc
atec inc
ate inc
abc group
abc groups
abc grups
如何找到在SQL这样的项目还是有这方面的任何Ruby库。
我有一个列名为company_name(字符串)的表,我需要找到此列的重复值,我不能使用distinct或group by因为它们不完全相同。 如:如何找到重复的字符串值,其中不完全相同,但在SQL中相似
atec,inc
atec inc
ate inc
abc group
abc groups
abc grups
如何找到在SQL这样的项目还是有这方面的任何Ruby库。
我不知道SQL有一个SELECT WHERE A SORTA_OF_LIKE B但查找“Levenshtein距离”,也许是一种做你想做的事情的方式。
如果有某种模式的变化,你可以使用正则表达式尝试,它的MySQL似乎支持(我们使用Postgres的,这肯定不会):
http://dev.mysql.com/doc/refman/5.1/en/regexp.html
如果不是的话,恐怕您必须在您的应用中执行此操作。正如Pete提到的,有各种算法可以找到类似的声音,我们使用Levenshtein距离,Simhashes的Hamming距离和Kölner语音编码来达到这个目的。
这将是一个函数索引一个完美的使用,但我不认为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
另外,如果你不熟悉的话所产生,这是强大的概念,这也将帮助您提高搜索的检索。
希望有所帮助。
你不能使用正则表达式来选择,只是返回一个真/假(匹配/不匹配)或那个效果。 – dogmatic69 2011-04-01 14:22:42
@ domatic69在Postgres中有类似'SELECT record FROM myrecords WHERE record〜'A';'的东西。 http://oreilly.com/pub/a/databases/2006/02/02/postgresq_regexes.html – 2011-04-01 15:44:53