【问题】业务系统上因为前期设计原因,录入的数据存在大量重复,现在需要去除重复录入的名称。但这些名称不尽相同,都存在几个字的差别。
【分析】1、根据名称排序,然后逐个删除,结果就是删除得都是前几个字符一样的,如“山东青岛XX公司”和“山东青岛XX有限公司”,但对“青岛XX公司”就无能为力了。
2、逐条记录与其他记录进行名称比对,根据相似度查找,然后筛选出相似对较高的记录
【结论】
1、根据基本SQL查询即可。
2、主要说第二种方法。oracle 存在 UTL_MATCH包,其中有函数.edit_distance_similarity用来查找相似度。查找到相似度高的进行修改
【分析】1、根据名称排序,然后逐个删除,结果就是删除得都是前几个字符一样的,如“山东青岛XX公司”和“山东青岛XX有限公司”,但对“青岛XX公司”就无能为力了。
2、逐条记录与其他记录进行名称比对,根据相似度查找,然后筛选出相似对较高的记录
【结论】
1、根据基本SQL查询即可。
2、主要说第二种方法。oracle 存在 UTL_MATCH包,其中有函数.edit_distance_similarity用来查找相似度。查找到相似度高的进行修改
with dc as
(
select id,
Xname,
replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(dcname,
'电力',

在面临数据库中存在大量重复但不完全相同的名称时,可以通过两种方法来查找并去除重复记录。一种是简单地按名称排序删除,但这无法处理差异较大的名称。另一种方法是利用Oracle数据库提供的UTL_MATCH包,尤其是edit_distance_similarity函数,来计算记录间的相似度,从而找出相似度较高的记录对,并进行修改。通过创建CTE,将名称替换和相似度计算结合,可以有效地找出高相似度的名称进行处理。
1061

被折叠的 条评论
为什么被折叠?



