오라클 - row 데이터를 컬럼 하나로 출력하기

2020. 5. 13. 15:14난장 Dev/Database


이것도 생각보다 자주 사용하는 것 같다.

사용하다 보니 문자열 byte가 4000 기준으로 코드가 다르긴 한데, 난 그냥 4000바이트 이상 조회되는 것으로 대부분 처리한다.

 

1. 컬럼이 4000byte 이상인 경우

// 4000byte 이상
SELECT
     SUBSTR(XMLAGG (XMLELEMENT(X,',', LEVEL ) ORDER BY LEVEL).EXTRACT('//text()'),2) CONTENTS
FROM DUAL 
CONNECT BY LEVEL <= 10;

 


  

 

2. 컬럼이 4000byte 미만인 경우

// 4000byte 미만인 경우
SELECT
    LISTAGG( LEVEL, ',') WITHIN GROUP(ORDER BY LEVEL) LISTS
FROM DUAL
CONNECT BY LEVEL <= 10

 

표현은 동일하지만, 2번째 방법으로 사용할 때는 작은 데이터로만 하길...