【Oracle】对比两个组合起来的字符是否一致
【Oracle】对比两个组合起来的字符是否一致
背景
需要从数据库对多个不同数据源的走向信息进行判断是否一致,但是因为其中的数据是非标的,且没法在处理的时候进行排序
例如
字符串1:'欧规,英规,日规'
字符串2:'欧规,日规,英规'
可以参考下面的处理
declare
str1 varchar2(100) := '欧规,英规,日规';
str2 varchar2(100) := '欧规,日规,英规';
sorted_str1 varchar2(100);
sorted_str2 varchar2(100);
begin
--对第一个字符串进行排序
select listagg(regexp_substr(str1, '[^,]+', 1, level), ',') within group (order by regexp_substr(str1, '[^,]+', 1, level))
into sorted_str1
from dual
connect by level <= regexp_count(str1, ',') + 1;
--对第二个字符串进行排序
select listagg(regexp_substr(str2, '[^,]+', 1, level), ',') within group (order by regexp_substr(str2, '[^,]+', 1, level))
into sorted_str2
from dual
connect by level <= regexp_count(str2, ',') + 1;
--比较排序后的结果
if sorted_str1 = sorted_str2 then
...
else
...
end if;
end;
您能读到这儿,我呢是发自真心的感谢您,若要转载,还望请您带上链接

浙公网安备 33010602011771号