Oracle LISTAGG排重方法,oraclelistagg排重
1.使用正则表达式进行排重
SELECT regexp_replace('2,2,3,4,5 ', '([^,]+)(,\1)+', '\1') AS col FROM dual查询结果:
SQL> SELECT regexp_replace('2,2,3,4,5 ', '([^,]+)(,\1)+', '\1') AS col 2 FROM dual 3 ; COL -------- 2,3,4,5可以对字符串进行排重
2. 使用上面的正则表达式对listagg进行排重
SELECT listagg(t.deptno, ',') within GROUP(ORDER BY t.deptno) deptno, regexp_replace((listagg(t.deptno, ',') within GROUP(ORDER BY t.deptno)), '([^,]+)(,\1)+', '\1') bl_number FROM scott.emp t执行结果:
SQL> SELECT listagg(t.deptno, ',') within GROUP(ORDER BY t.deptno) deptno, 2 regexp_replace((listagg(t.deptno, ',') within GROUP(ORDER BY t.deptno)), '([^,]+)(,\1)+', '\1') bl_number 3 FROM scott.emp t 4 ; DEPTNO BL_NUMBER -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- 10,10,10,20,20,20,20,20,30,30,30,30,30,30 10,20,30成功对listagg排重。
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。