【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;
posted @ 2025-04-30 15:47  DbWong_0918  阅读(23)  评论(0)    收藏  举报