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>