본문 바로가기
IT/DB

[ORACLE] 오라클 ORA-01489 에러 LISTAGG 길이 초과 시 해결 방법

by 스터딩아재 2021. 8. 20.
반응형

 

 

 

* 오라클에서 LISTAGG 길이 초과 시 ON OVERFLOW TRUNCATE 절을 사용 가능하다. (Oracle 12c 이상)

* LISTAGG 초과 건 표기 방법 변경 방법

 

* WM_CONCAT에선 SUBSTR을 사용하면 된다.

* LISTAGG 쓰다가 ORA-01489: result of string concatenation is too long 에러날 때 참고하면 좋을 것 같다.

 

 

 

1. 중복 제거 후 붙이기

-- 중복제거
SELECT LISTAGG(DISTINCT 컬럼명, ',')
FROM   테이블명

> COL1,COL2,COL3,COL4 --중복 제거 됨

 

 

2. 중복 제거 + 4000바이트 초과 건 생략 방법

-- 초과분 생략하기
SELECT LISTAGG(DISTINCT 컬럼명, ',' ON OVERFLOW TRUNCATE)
FROM   테이블명

> COL1,COL2,COL3,COL4,중간생략,COL3880,...(40) --초과된 40건이 더 있다는 뜻

 

 

3. 표기 변경 옵션

* TRUNCATE 뒤 문자열이 마지막에 표시

* WITHOUT COUNT 작성 시 숫자 제거

 

SELECT LISTAGG(컬럼명, ',' ON OVERFLOW TRUNCATE '~초과' WITHOUT COUNT)
FROM   테이블명

> COL1,COL2,COL3,COL4,중간생략,COL3880,~초과

 

 

 

그리드형

댓글