ITPub博客

首页 > 数据库 > 国内数据库 > 兼容oracle的edit_distance_similarity 比较两个字符串相似度

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

原创 国内数据库 作者:瀚高PG实验室 时间:2023-02-21 15:18:34 0 删除 编辑

瀚高数据库

目录
环境
系统平台: 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('瀚高数据库','国产瀚高数据库第一');



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69994931/viewspace-2936214/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
瀚高PG实验室(Highgo PG Lab)依托于瀚高DBA运维团队及瀚高数据库PG内核研发团队,旨在深入研究PostgreSQL技术、使用技巧、内核探秘、PG教学等,并进行分享。欢迎大家关注、交流。

注册时间:2021-02-18

  • 博文量
    184
  • 访问量
    126132