응용 프로그램을 개발 할 때 1건의 정보를 여러건으로 조회하여야 하는 경우가 있다.
아래의 내용은 1건의 코드내용을 여러건으로 보여주는 예제이다.
1건의 로우를 여러건으로 처리하는 방법은 카테시안 곱을 발생시키는 방법으로 가능하다.
아래의 T_cnt 테이블에 10건의 로우를 입력시킨다.
특정컬럼의 분류하고자 하는 문자의 개수만큼 로우를 발생시키고, 분리해서 보여주고자 하는 문자를 분리 처리하면 된다.
○ 테스트용 테이블 생성 및 테스트자료 입력
create table t_list(code_id varchar(10), code_nm varchar(60));
INSERT INTO t_list VALUES ('01', 'SEOUL,BUSAN,DAEJEON,INCHEON,GWANGJU,GANGWON');
create table T_cnt(cnt_no int);
INSERT INTO T_cnt VALUES (1);
INSERT INTO T_cnt VALUES (2);
INSERT INTO T_cnt VALUES (3);
INSERT INTO T_cnt VALUES (4);
INSERT INTO T_cnt VALUES (5);
INSERT INTO T_cnt VALUES (6);
INSERT INTO T_cnt VALUES (7);
INSERT INTO T_cnt VALUES (8);
INSERT INTO T_cnt VALUES (9);
INSERT INTO T_cnt VALUES (10);
○ 샘플 쿼리
select A.code_id, REPLACE( SUBSTRING_INDEX( A.code_nm,',',B.cnt_no ), SUBSTRING_INDEX( A.code_nm,',',B.cnt_no-1 )||',', '')
from t_list A , T_cnt B
where B.cnt_no <= length(A.code_nm) - length(replace(A.code_nm,',','')) +1 ;