相容oracle的edit_distance_similarity 比較兩個字串相似度

瀚高PG實驗室發表於2023-02-21

瀚高資料庫

目錄
環境
系統平臺: 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部落格 ” ,連結:http://blog.itpub.net/69994931/viewspace-2936214/,如需轉載,請註明出處,否則將追究法律責任。

相關文章