Oracle SQL在同一张表中找到相似之处

时间:2019-12-16 22:59:00

标签: sql jaro-winkler

我有这张桌子:

CREATE TABLE objects
( object_id number(10) NOT NULL,
  name VARCHAR2(200 BYTE),
);

具有这些记录:

9151482934513744571 AC4081_OMACHA
9151482934513743613 AC4082_COLQUEPATA
9151482934613750753 AC4419_PAUCARTAMBO CUSCO
9154252955213812112 AC4419_PAUCARTAMBO_CUSCO
9151482934513743808 AC4453_KITENI_PROGRESO
9151482934613748866 ACT4411_Calca
9152506990913096049 ACT4411_Calca_Nuevo__

表有6000条记录,这只是一个示例,但是我想从中返回的只是对象的相似名称(没有相等的对象,只有相似性),所以具有范围的相似性:

AC4419_PAUCARTAMBO CUSCO    AC4419_PAUCARTAMBO_CUSCO    98
ACT4411_Calca   ACT4411_Calca_Nuevo__   92

我用这些查询来做,但是,如您所见,指定了object_id,在这种情况下为9151482934613748866,我的问题是,如果删除特定的对象ID,结果将超出预期。 这是查询:

select a.name,b.name,UTL_MATCH.jaro_winkler_similarity(a.name,b.name) 
from objects a,(select name from objects) b 
where  
a.object_id=9151482934613748866 and UTL_MATCH.jaro_winkler_similarity(a.name,b.name)>90
and UTL_MATCH.jaro_winkler_similarity(a.name,b.name)<100;

但是删除特定的object_id不能按预期方式工作,这给了我所有组合,而不是所需的特定结果。怎么了?

0 个答案:

没有答案