你没有说你使用的是什么版本的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