< 중복제거 >

regexp_replace(LISTAGG(ACCT_ID, ',') WITHIN GROUP(ORDER BY ACCT_ID), '([^,]+)(,\1)+', '\1')

 

위 정규식을 이용하면 된다고 하는데... 

실제 되긴 하지만 

어떤 특정한 경우에는 잘 안되기도 한다. 

 

그래서 찾은게 아래.

 

regexp_replace(LISTAGG(ACCT_ID, ',') WITHIN GROUP(ORDER BY ACCT_ID), '([^,]+)(,\1)*(,|$)', '\1\3')

 

이게 잘 통하지만 이것도 안통하는 경우가 있을 수 있지 않을까...?

 

 

<4000BYTE 초과 시 생략 >

regexp_replace(LISTAGG(ACCT_ID, ',' ON OVERFLOW TRUNCATE '후략' WITH COUNT) WITHIN GROUP(ORDER BY ACCT_ID), '([^,]+)(,\1)*(,|$)', '\1\3')

 

TRUNCATE 뒤의 '후략' 은 생략된 부분을 보여주기 위해 추가한 문자이나 '후략' 없어도 됨

WITH COUNT는 생략된 ROW수를 표시해줌

+ Recent posts