Используя некоторые из [оракула внутреннего similiarity] найдено в UTL_Match (https://docs.oracle.com/database/121/ARPLS/u_match.htm#ARPLS71219) Соответствие ...
Эта логика больше подходит для сопоставления имен или описаний, которые являются «похожими», и где фонетические варианты написания или опечатки могут вызывать t он записывает, что не подходит.
При помощи настройки .5 ниже вы можете увидеть, как% приближает вас ближе к идеальным совпадениям.
with cte as (
select 'Content of values' val from dual union all
select 'Values identity' val from dual union all
select 'triple combo' from dual union all
select 'my combo'from dual union all
select 'sub-zero combo'from dual)
select a.*, b.*, utl_match.edit_distance_similarity(a.val, b.val) c, UTL_MATCH.JARO_WINKLER(a.val,b.val) JW
from cte a
cross join cte b
where UTL_MATCH.JARO_WINKLER(a.val,b.val) > .5
order by utl_match.edit_distance_similarity(a.val, b.val) desc
и скриншот запроса/вывода.
Или мы могли бы использовать внутреннее соединение и> если мы хотим один способ compairisons ...
select a.*, b.*, utl_match.edit_distance_similarity(a.val, b.val) c, UTL_MATCH.JARO_WINKLER(a.val,b.val) JW
from cte a
inner join cte b
on A.Val > B.Val
where utl_match.jaro_winkler(a.val,b.val) > .5
order by utl_match.edit_distance_similarity(a.val, b.val) desc
это возвращает 3 нужные записи.
But this does not explicitly check each any word matches.
который был вашим базовым требованием. Я просто хотел, чтобы вы знали об альтернативах.
Что такое РСУБД? Здесь вы делаете несколько шаблонов, которые некоторые RDBMS встроили в функции, которые могли бы помочь. – xQbert
@xQbert Я использую Oracle 11g. – Mike
Посмотрите на функции [UTL_Match] (https://docs.oracle.com/database/121/ARPLS/u_match.htm#ARPLS352). Там есть некоторые достойные функции соответствия. – xQbert