Как найти возможные дубликаты в строке с помощью SQL-запроса? - PullRequest
0 голосов
/ 02 марта 2019

Я хочу, чтобы запрос нашел возможные дубликаты подряд.Например: Таблица A

Name
------------
1.Rajaraju.    
2.Rajuraja.     
3.Vijay. 
4.Ramkumar. 
5.Kumarram.  
6.Sakthi. 
7.Raj ram Ravi. 
8.Ravi Raj ram. 

Хотите запросить, чтобы выбрать все имена, которые похожи, например, Раджараджу и Раджураджа, аналогично, Радж Рам Рави и Рави Радж Рам .....

1 Ответ

0 голосов
/ 02 марта 2019

UTL_MATCH.JARO_WINKLER_SIMILARITY может быть одним из вариантов.Более высокое значение означает лучшее совпадение.

Например, я отсортировал результат по убыванию сходства и показал только несколько строк.Вы должны решить, какое значение сходства удовлетворяет вашим потребностям, и применить другое условие, например where sim >= 80.

SQL> with test (name) as
  2    (select '1.Rajaraju.' from dual union all
  3     select '2.Rajuraja.' from dual union all
  4     select '3.Vijay.' from dual union all
  5     select '4.Ramkumar.' from dual union all
  6     select '5.Kumarram.' from dual union all
  7     select '6.Sakthi.' from dual union all
  8     select '7.Raj ram Ravi.' from dual union all
  9     select '8.Ravi Raj ram.' from dual
 10    ),
 11  -- remove leading numbers and dots
 12  inter as
 13    (select translate(t.name, 'x.0123456789', 'x') name
 14     from test t
 15    )
 16  -- find similarity
 17  select a.name,
 18         b.name,
 19        utl_match.jaro_winkler_similarity(a.name, b.name) sim
 20  from inter a cross join inter b
 21  where a.name < b.name
 22  order by 3 desc;

NAME                 NAME                        SIM
-------------------- -------------------- ----------
Rajaraju             Rajuraja                     87
Raj ram Ravi         Rajuraja                     82
Raj ram Ravi         Ravi Raj ram                 80
Raj ram Ravi         Rajaraju                     78
Rajuraja             Ramkumar                     74
Rajaraju             Ramkumar                     74
Kumarram             Ramkumar                     72
Rajaraju             Ravi Raj ram                 71
Rajuraja             Ravi Raj ram                 71
<snip>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...