오라클 구분자 분리후 세로로 출력 0 1 1,331

by 돌배뚝 [SQL Query] regexp_substr connect by [2021.10.19 10:42:31]


안녕하십니까??

도움을 청하려 글 남깁니다

한컬럼(4000byte)에 검색어가 ;구분자로 최대 20개

 600row의데이티가 있습니다

가나;다라;마바사;아자차카;~~

다라;아자;가나다라;가나;~~~

 

;구분자로 중복을 없애고 세로로 추출을 하고자 합니다

 

regexp_substr 와 level사용 해서. 만들어보니 데이타가 몇row안될때는 나오는데 500row가 넘어가면 몇만건 이상의 데이타가 끝도 없이 나옵니다

 

어떻게 중복을 없애고 실 데이타만 조회 하나요?

by 마농 [2021.10.19 13:33:01]

CONNECT BY LEVEL < n 형태의 행 복제 방식은
dual 과 같이 1건의 자료에 적용하는 방식입니다.
여러건의 집합에 직접 적용하면 기하급수로 어마어마한 중복 및 성능저하가 발생됩니다.
아마도 테이블에 직접적으로 connect by level 을 적용한 듯 합니다.
dual 을 이용해 1차 적용한 집합을 이용해 조인하여 사용하세요.
- 오류 : FROM tabel CONNECT BY LEVEL <= ...
- 수정 : FROM tabel, (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 20) WHERE lv <= ...
- 참고 : http://gurubee.net/article/55635

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입