반응형
* 오라클에서 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,~초과
그리드형
'IT > DB' 카테고리의 다른 글
[ORACLE] 프로시저(Procedure) 생성 및 실행과 작성 문법 (PL/SQL) (0) | 2021.09.28 |
---|---|
[ORACLE] 오라클 ROUND, TRUNC (소수점 반올림, 버림) (0) | 2021.09.10 |
[ORACLE] 오라클 문자열 붙이기 / WM_CONCAT / LISTAGG (0) | 2021.08.20 |
[ORACLE] 자주보는 오라클 에러 모음 / ORA-에러코드 모음 (0) | 2021.08.20 |
[ORACLE] 오라클 테이블 컬럼 순서 변경 (0) | 2021.08.20 |
댓글