使用している Oracle のバージョンについては言及していません。この例は、11g バージョンに基づいています。utl_matchedit_distance
パッケージの関数を使用して、ある文字列を別の文字列に変換するために変更する必要がある文字数を決定できます。最大関数は、渡されたパラメーターのリストで最大の値を返します。次に例を示します。
-- sample of data
with t1(col1, col2) as(
select 'This is my first assignment in SQL', 'My first assignment in SQL ' from dual
)
-- the query
select trunc(((greatest(length(col1), length(col2)) -
(utl_match.edit_distance(col2, col1))) * 100) /
greatest(length(col1), length(col2)), 2) as "%"
from t1
結果:
%
----------
70.58
補遺
@jonearles が正しく指摘したように、パッケージedit_distance_similarity
の機能を使用する方がはるかに簡単です。utl_match
with t1(col1, col2) as(
select 'This is my first assignment in SQL', 'My first assignment in SQL ' from dual
)
select utl_match.edit_distance_similarity(col1, col2) as "%"
from t1
;
結果:
%
----------
71