日期:2014-05-17  浏览次数:21036 次

请问怎么比较2个字符串是否相等
现在有2个字符串  
一个是"AA,BB,CC",另外一个是"CC,BB,AA",这样的字符串就是相等的,虽然顺序不一样,不知道ORACLE中怎么实现这个东西。
Oracle

------解决方案--------------------
可分拆后为结果集再比较

参照
http://blog.csdn.net/roy_88/article/details/6930577
------解决方案--------------------
with t as
 (select 'AA,BB,CC' a, 'CC,BB,AA' b
    from dual
  union all
  select 'AA1,BB,CC,D' a, 'CC,BB,AA2,D' b
    from dual
  union all
  select 'AA2,BB' a, 'AA2,BB,D' b from dual)
select t.a,
       t.b,
       decode(listagg(str1) within group(order by str1),
              listagg(str2) within group(order by str2),
              1,
              0) flag
  from (select distinct t.a,
                        t.b,
                        regexp_substr(t.a, '[^,]+', 1, level) str1,
                        regexp_substr(t.b, '[^,]+', 1, level) str2
          from t
        connect by level <=
                   greatest(regexp_count(t.a, ','), regexp_count(t.b, ',')) + 1) t
 group by t.a, t.b;