gpt4 book ai didi

MySQL 显示可能的重复项

转载 作者:行者123 更新时间:2023-11-29 14:50:47 25 4
gpt4 key购买 nike

我希望显示 MySQL 表中 name 列中所有可能的重复条目。

例如,Adobe Photoshop 和 Photoshop 应显示为“可能的重复项”。

这可能吗?

最佳答案

您可以从使用 SOUNDEX() 开始,这可能会满足您的需要

SOUNDEX() 的缺点是:

  • 它无法区分较长的字符串。仅考虑前几个字符,末尾分歧的较长字符串会生成相同的 SOUNDEX 值
  • 第一个字母必须相同,否则您将无法轻松找到匹配项。 SQL Server 有 DIFFERENCE() 函数来告诉您两个 SOUNDEX 值相差多少,但我认为 MySQL 没有内置此类功能。
  • 对于 MySQL,至少根据 the docs , SOUNDEX 对于 unicode 输入已损坏

示例:

SELECT SOUNDEX('Microsoft')
SELECT SOUNDEX('Microsift')
SELECT SOUNDEX('Microsift Corporation')
SELECT SOUNDEX('Microsift Subsidary')

/* all of these return 'M262' */

对于更高级的需求,我认为您需要查看Levenshtein distance (也称为“编辑距离”)两个字符串并使用阈值。这是更复杂(=更慢)的解决方案,但它具有更大的灵 active 。

主要缺点是,您需要两个字符串来计算它们之间的距离。使用 SOUNDEX,您可以将预先计算的 SOUNDEX 存储在表中,并对其进行比较/排序/分组/过滤。通过 Levenshtein 距离,您可能会发现“Microsoft”和“Nzcrosoft”之间的差异仅为 2,但需要更多时间才能得出该结果。

无论如何,MySQL 的 Levenshtein 距离函数示例可以在 Levenshtein Distance as a MySQL Stored Function 找到。 .

关于MySQL 显示可能的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5782393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com