Если вы выполняете перекрестное объединение этих таблиц и вычисляете некоторые сходства или хороший, старый результат instr
функции, то вы получите что-то вроде этого (с моими примерами данных, конечно):
SQL> with
2 tab1 (ord) as
3 (select '00123' from dual union all
4 select 'ab445' from dual union all
5 select 'xyz' from dual
6 ),
7 tab2 (ord) as
8 (select '123' from dual union all
9 select 'ab556' from dual union all
10 select 'zyx' from dual
11 )
12 select a.ord, b.ord,
13 utl_match.jaro_winkler_similarity(a.ord, b.ord) jwsim,
14 utl_match.edit_distance_similarity(a.ord, b.ord) edsim,
15 --
16 instr(a.ord, b.ord) ins
17 from tab1 a cross join tab2 b;
ORD ORD JWSIM EDSIM INS
----- ----- ---------- ---------- ----------
00123 123 0 60 3
00123 ab556 0 0 0
00123 zyx 0 0 0
ab445 123 0 0 0
ab445 ab556 78 40 0
ab445 zyx 0 0 0
xyz 123 0 0 0
xyz ab556 0 0 0
xyz zyx 55 34 0
9 rows selected.
SQL>
Теперь решите, какой вариант подходит вам больше всего.
INSTR
достаточно просто:
<snip>
17 from tab1 a cross join tab2 b
18 where instr(a.ord, b.ord) > 0;
ORD ORD JWSIM EDSIM INS
----- ----- ---------- ---------- ----------
00123 123 0 60 3
SQL>
Выберите уровень сходства самостоятельно, например, 60
, но это, вероятно, не то, что вы хотите в этом случае:
<snip>
17 from tab1 a cross join tab2 b
18 where utl_match.jaro_winkler_similarity(a.ord, b.ord) > 60;
ORD ORD JWSIM EDSIM INS
----- ----- ---------- ---------- ----------
ab445 ab556 78 40 0
SQL>
Я думаю, instr
дает лучший результат (согласно тому, что вы описали).