【絕對原創,網際網路上除了這裡肯定是沒有的】oracle字串匹配度函式
自己寫的函式,網際網路上肯定是沒有的,本人經常資料轉換,這個函式用的比較多,大家參考,留著也不能產生經濟效益,就分享出來啦 ,oracle10以上才有正則匹配函式
例子:
y varchar2(50):='西寧市社會事業保險管理局'; zd varchar2(50):='西寧市社保局'; result:=0.5
y varchar2(50):='西寧市社保局'; zd varchar2(50):='西寧市社會事業保險管理局'; result:=1
使用場景:
select * from xxxxx where Fun_Likepersent(field1,field2)>0.5 匹配度大於50%
select * from xxxxx where Fun_Likepersent(field1,field2)=1 完全包含在內
函式程式碼:
CREATE OR REPLACE FUNCTION Fun_Likepersent(Str1 IN VARCHAR2, Str2 IN VARCHAR2) RETURN NUMBER IS RESULT NUMBER; Msg VARCHAR2(1000); BEGIN
SELECT (Length(Str1) - Nvl(Length(Regexp_Replace(Str1, '[' || Regexp_Replace(Str2, '[-*\\]') || ']')), 0)) / Length(Str1) INTO RESULT FROM Dual;
RETURN(Round(RESULT, 1));
EXCEPTION WHEN OTHERS THEN NULL; Msg := SQLERRM; RESULT := 0; END Fun_Likepersent; /