gpt4 book ai didi

sql - Oracle 查找相似但不完全匹配的重复记录

转载 作者:行者123 更新时间:2023-12-01 10:04:30 26 4
gpt4 key购买 nike

我正在尝试寻找一种方法来搜索文本字段以识别可能相似的行,这样我就可以确定它们是否是应该合并的重复行。例如,如果我的数据如下所示:

MyText_Column

  1. 鲍勃
  2. 鲍比
  3. 罗伯特
  4. 珍妮
  5. 珍妮
  6. 约翰
  7. 乔纳森

GROUP BY 不起作用,因为没有一个值是完全相同的,但如果我可以有一个查询返回一个列表,其中列出一行相似的可能性,那就太好了。也许有更好的布局,但我想象的是这样的结果:

查询结果

搜索比较 Likely_Match

  1. 鲍勃鲍比 96%
  2. 鲍勃·罗伯特 12%
  3. 鲍勃简 0%
  4. 鲍勃珍妮 0%
  5. .....
  6. 简·珍妮 87%
  7. 简珍妮 69%
  8. 简·乔 12%

然后对于这样的结果,我可以按可能性排序,并通过视觉扫描来确定结果是否重复。

最佳答案

UTL_MATCH package有几种方法可以做到这一点——我猜你会想使用 Jaro-Winkler 相似性算法。有点像

SELECT a.mytext_column search,
b.mytext_column compare,
utl_match.jaro_winkler_similarity( a.mytext_column, b.mytext_column ) similarity
FROM table_name a,
table_name b
WHERE a.<<primary key>> != b.<<primary key>>
ORDER BY utl_match.jaro_winkler_similarity( a.mytext_column, b.mytext_column ) desc

这将生成一个 N * (N-1) 行的结果集,根据原始数据集中的行数,这可能会很笨重。您可能希望通过仅返回特定搜索词的最佳匹配项或仅返回相似度得分大于某个阈值的行来限制事情。

关于sql - Oracle 查找相似但不完全匹配的重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12077958/

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