SQL中的正则表达式没有正确分组

时间:2016-05-16 13:23:38

标签: sql regex string oracle

我正在使用正则表达式来串联唯一来源。我的问题是来源正在合并:

即。来源[经理,令,令,令人满意] [/ p>

需要输出[manager,ream]

输出接收[manageream,ream]

SELECT regexp_replace( listagg(c.source, ',')
within group(order by c.person_no) , 
'([^,]+)(,\1)+', '\1') source 
FROM table c

如何修复上述代码以获取所需输出

1 个答案:

答案 0 :(得分:1)

如果我了解您的需要,您可能只需要DISTINCT

SQL> create table test(source) as (
  2  select 'manager' from dual union all
  3  select 'ream'    from dual union all
  4  select 'ream'    from dual union all
  5  select 'ream'    from dual
  6  );

Table created.

SQL> select listagg(source, ',') within group (order by 1)
  2  from (
  3          select distinct source
  4          from test
  5       );

LISTAGG(SOURCE,',')WITHINGROUP(ORDERBY1)
----------------------------------------------------------------------------
manager,ream

SQL>

内部查询仅用于获取不同的值,而外部查询用于连接;你可以用不同的方式重写它,我相信这是最具可读性的。