oracle字符串去重 listagg去重 正则去重

regexp_replace((listagg(OV.PNR, ',' ) within group (order by OV.PNR)), '([^,]+)(,\1)+', '\1')
//https://blog.csdn.net/lx_manito/article/details/78489416


regexp_replace(listagg(t.class_key, ',') within
                      group(order by t.class_key),
                      '([^,]+)(,\1)*(,|$)',
                      '\1\3')
//https://blog.csdn.net/Weixiaohuai/article/details/84998212 

以上为什么只提到listagg,其实对字符串“aa,aa,a,ab,ac”也有用,但是有一个限制,只对临近的字段可以做到去重,故多提到在listagg的去重中,因为listagg中可以排序。

不能排序的,建议不用负责的sql解决,用java代码解决去重效率也会很快

正则表达式解析:
\1+ 表示重复上面捕获组里的内容一次或多次

你可能感兴趣的:(JAVA)