WITH t1 AS ( SELECT '안녕하세요 데이터 조회 시 조회 된 데이터가 25자 이상인 경우 단어 단위로 줄바꿈 처리 하고 싶습니다.' v FROM dual ) , t2 AS ( SELECT LEVEL lv , REGEXP_SUBSTR(v, '[^ ]+', 1, LEVEL) v FROM t1 CONNECT BY LEVEL <= REGEXP_COUNT(v, '[^ ]+') ) , t3(lv, v, x, rn) AS ( SELECT lv , v , LENGTH(v) x , 1 rn FROM t2 WHERE lv = 1 UNION ALL SELECT c.lv , c.v , CASE WHEN LENGTH(c.v) + p.x < 25 THEN LENGTH(c.v) + p.x + 1 ELSE LENGTH(c.v) END x , CASE WHEN LENGTH(c.v) + p.x < 25 THEN p.rn ELSE p.rn + 1 END rn FROM t3 p , t2 c WHERE c.lv = p.lv + 1 ) SELECT rn , LISTAGG(v, ' ') WITHIN GROUP(ORDER BY lv) v FROM t3 GROUP BY rn ORDER BY rn ;