兼容oracle的edit_distance_similarity 比较两个字符串相似度

瀚高数据库
目录
环境
症状
问题原因
解决方案
报错编码

环境
系统平台:Linux x86 Red Hat Enterprise Linux 6
版本:4.5.7

症状
在进行应用适配过程中会遇到用户使用oracle的SYS.UTL_MATCH.edit_distance_similarity自带函数,进行比较两个字符串的相似度,但在替换为瀚高数据库后,会产生函数不存在的问题。

问题原因
瀚高数据库内核未兼容oracle的SYS.UTL_MATCH.edit_distance_similarity,暂未支持。
所以需要通过瀚高数据库编写自定义函数的方式去实现oracle的SYS.UTL_MATCH.edit_distance_similarity的相同的效果,达到减少代码修改量的初衷。

解决方案
1、首先在瀚高数据库中创建扩展:

create EXTENSION fuzzystrmatch;

2、在瀚高数据库中执行下述SQL:

create or replace function edit_distance_similarity(text,text) returns numeric as $$

declare 

reault NUMERIC;

max_length numeric;

begin 

if length($1) > length($2) then 

max_length = length($1);

else max_length = length($2);

end if;

select round((1 - (levenshtein($1, $2) / max_length ::numeric)) * 100) into reault  ;

return reault;

end;

$$ LANGUAGE plpgsql

3、使用:

select edit_distance_similarity('瀚高数据库','国产瀚高数据库第一');

报错编码

oracle的edit_distance_similarity
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值