为了在 DM 上兼容 oracle 的 utl_match 包,提供功能上与 oracle 基本一致的 utl_match 包。利用这个包提供计算两个字符串差异字符个数和相似度的函数。
29.1 相关方法
utl_match 包所支持的 2 个函数,分别计算源字符串和目标字符串的差异字符个数和相似度。
- edit_distance
输出字符串 s1 转化为 s2 所需要被插入、删除或替换字符的个数。
语法如下:
FUNCTION EDIT_DISTANCE(
S1 IN VARCHAR,
S2 IN VARCHAR
)RETURN INTEGER;
参数详解
- s1 输入参数,VARCHAR 数据。
- s2 输入参数,VARCHAR 数据。
- edit_distance_similarity
输出两个字符串的相似度。通过字符串 s1 转化为 s2 所需要被插入、删除或替换字符的个数,计算出字符串 s1 和 s2 的相似度。返回 1~100 之间的整数,0 代表完全不匹配,100 代表完全匹配。
语法如下:
FUNCTION EDIT_DISTANCE_SIMILARITY (
S1 IN VARCHAR,
S2 IN VARCHAR
)RETURN INTEGER;
参数详解
- s1 输入参数,VARCHAR 数据。
- s2 输入参数,VARCHAR 数据。
29.2 举例说明
使用包内的过程和函数之前,如果还未创建过系统包,请先调用系统过程创建系统包。
SP_CREATE_SYSTEM_PACKAGES (1,'UTL_MATCH');
例 utl_MATCH 包的应用。
例 1 EDIT_DISTANCE
SELECT UTL_MATCH.EDIT_DISTANCE('dameng','meng') FROM DUAL;
查询结果如下:
2
例 2 EDIT_DISTANCE_SIMILARITY
SELECT UTL_MATCH.EDIT_DISTANCE_SIMILARITY('china','chin') FROM DUAL;
查询结果如下:
80