create or replace function compareStr(v_a varchar2, v_b varchar)
return number as
num number;
v_count number;
begin
num := -1;
--优先匹配位数
if length(v_a) != length(v_b) then
return num;
end if;
--排重检查
select count(*)
into v_count
from (select *
from (SELECT REGEXP_SUBSTR(A, '[^,]+', 1, LEVEL) personStr
FROM (SELECT v_a A FROM DUAL) A
CONNECT BY LEVEL <= LENGTH(A) - LENGTH(REPLACE(A, ',')) + 1)
minus
select *
from (SELECT REGEXP_SUBSTR(B, '[^,]+', 1, LEVEL) personStr
FROM (SELECT v_b B FROM DUAL) B
CONNECT BY LEVEL <= LENGTH(B) - LENGTH(REPLACE(B, ',')) + 1));
if v_count = 0 then
num := 1;
else
num := -1;
end if;
return num;
end;
联系客服