Oracle Regex删除重复项

时间:2017-06-15 13:54:15

标签: regex oracle

我需要从逗号分隔的字符串中删除重复的值。

Input String: a,a,a,b,c,a,b
Expected output: a,b,c

我尝试过:

with ct(str) as(
select 'a,a,a,b,c,a,b' from dual
)
select REGEXP_REPLACE(str,'([^,]*)(,\1)+($|,)','\1\3') col from ct

Output: a,b,c,a,b

上述查询可以删除连续的重复字符。

我知道上述要求可以通过用逗号分隔值创建一个表来解决,并对不同的值进行listagg

是否可以使用单个正则表达式语句来实现上述要求?

1 个答案:

答案 0 :(得分:1)

这应该为您提供所需的结果:

     with borken as (SELECT distinct column_value as str,'1' cnt FROM 
     table(apex_string.split('a,a,a,b,c,a,b' ,','))  )
     select listagg(str,',') within group (order by cnt) from borken;