我试图在列之间匹配大致相似的公司名称。我已经使用了
SELECT *
FROM table1
LEFT OUTER JOIN table2
ON table2.company_name
LIKE CONCAT('%', table1.company_name, '%')
OR table1.company_name
LIKE CONCAT('%', table2.company_name, '%')
以及其他方法,如REGEXP甚至是MYSQL的Levenshtein算法都没有运气。上面的方法似乎匹配~60%的行,但不匹配其余的。我无法找到一个不匹配的模式,因为许多不匹配的模式看起来很像那些模式。还有另一种方法可以在此方法之上匹配更多名称吗?比如在列中每行的前几个字符使用LIKE CONCAT的方法?
编辑:为了回应一些评论,我还增加了以上内容
OR (table1.company_name != table2.company_name) AND (SOUNDEX(table1.company_name) = SOUNDEX(table2.company_name))
这给了我与上面代码完全相同的结果,所以似乎SOUNDEX也没有帮助。另外,我认为FULLTEXT在尝试查找列之间的部分匹配时不适用。如果没有,有人可以向我说明如何做到这一点吗?