为了在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