MySQL SELECT DISTINCT具有变化容差
|
在我的数据库中,我有很多非常相似但不完全相同的条目。例如,只有两个字符可能不同,例如:
第1行:“天气很好,请访问http://xyz56.com \”
第2行:“天气很好,请访问http://xyz31.com \”
我想摆脱这些部分重复,而只收到这两行的一个结果。不管是哪个,我建议使用出现的第一个。
我可以利用MySQL的任何功能来有效地做到这一点吗?我的第一个想法是,如果匹配的字符超过某个阈值而不是忽略它,则提取更多数据并对字符串进行比较。不利的一面是,我永远不知道必须从数据库中提取多少个条目,而且它效率低下,因为我必须将每一行与所有其他行进行比较(O(n²))。
更新:
要更具体地说明用例:方差的位置并不总是在字符串的末尾,并且更改的可能还不止2个字符。字符串长度随每一行而变化。
没有找到相关结果
已邀请:
4 个回复
稼悸
捅瓶啡
来源:http://www.tutorialspoint.com/mysql/mysql-string-functions.htm#operator_sounds-like 例如,在Oracle PL / SQL中,您的字符串具有相同的SOUNDEX,并且SOUNDEX是无法区分的:
郡晒景沧
渴翅吮斡撤
辅助功能:
Levenshtein距离算法:Oracle PL / SQL实现 消息来源:http://www.merriampark.com/ldplsql.htm
如果您假设有一个名为EMPLOYEES的表,且其列名为FIRST_NAME的类型为VARCHAR2,则可以很容易地找到Levenshtein Distance = 1的记录,如下所示:
通过此查询,您可以在结果集的每一行中显示Levenshtein Distance = 1的first_name列表:
一个例子: