Oracle Regex 删除重复项



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

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)+($|,)','13') col from ct
Output: a,b,c,a,b

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

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

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

这应该给你所需的结果:

     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;

最新更新