UTL_MATCH 包

为了在 DM 上兼容 oracle 的 utl_match 包,提供功能上与 oracle 基本一致的 utl_match 包。利用这个包提供计算两个字符串差异字符个数和相似度的函数。

29.1 相关方法

utl_match 包所支持的 2 个函数,分别计算源字符串和目标字符串的差异字符个数和相似度。

  1. edit_distance

输出字符串 s1 转化为 s2 所需要被插入、删除或替换字符的个数。

语法如下:

FUNCTION EDIT_DISTANCE(
	S1		IN		VARCHAR,
	S2		IN 		VARCHAR
)RETURN INTEGER;

参数详解

  • s1 输入参数,VARCHAR 数据。
  • s2 输入参数,VARCHAR 数据。
  1. 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
微信扫码
分享文档
扫一扫
联系客服