Background Image
조회 수 10957 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

한 Row에 들어 있는 값을 여러 Row로 쿼리문 만들기

1) 한 Row의 구분자가 ','로 되어 있는 경우

2) ','개수 Row + 1개의 Row의 갯수 쿼리문 만들기


CREATE TABLE tb_list(idx integer not null primary key,
                         code_id varchar2(10),
                         code varchar2(100));
insert into tb_list(idx, code_id, code) values(1, '1012111300', '3,2,3,4,1,1,1,2,3,4,,4,2,3,1,2,4,1,2,1,3,4,3,2,2,3,2,3,4,1,1,1,2,3,4,,4,2,3,1');
CREATE TABLE tb_cnt(cnt_no INTEGER NOT NULL PRIMARY key);
INSERT INTO tb_cnt(cnt_no)
values(1) ,(2)       ,(3)       ,(4)       ,(5)       ,(6)       ,(7)       ,(8)       ,(9)       ,(10)      ,(11)      ,(12)      ,(13)      ,(14)      ,(15)    
,(16)      ,(17)      ,(18)      ,(19)      ,(20)      ,(21)      ,(22)      ,(23)      ,(24)      ,(25)      ,(26)      ,(27)      ,(28)      ,(29)      ,(30)    
,(31)      ,(32)      ,(33)      ,(34)      ,(35)      ,(36)      ,(37)      ,(38)      ,(39)      ,(40)   
;


4) 쿼리문
SELECT a.idx, a.code_id
         , REPLACE(substring_index(a.code,',',b.cnt_no), SUBSTRING_INDEX(a.code,',',b.cnt_no-1)||',','') AS answer
FROM (       
SELECT idx
         , code_id
         , code
FROM t_list ) a, tb_cnt b
WHERE code_id = '1012111300'
      AND b.cnt_no <= LENGTH(a.code) - LENGTH(REPLACE(a.code, ',','')) +1

  • ?
    성진 2016.12.10 00:17 Files첨부 (1)
    위에는 오라클 예제이고

    CUBRID 예제는 다음과 같습니다. 또한 추가 조인이 필요 없게 만들었습니다.

    SELECT

        code,

        LEVEL,

        REPLACE(REPLACE(SUBSTRING_INDEX(code,',',LEVEL), SUBSTRING_INDEX(code,',',LEVEL -1),''),',','') code_split

    FROM (SELECT '3,2,3,4,1,1,1,2,3,4,,4,2,3,1,2,4,1,2,1,3,4,3,2,2,3,2,3,4,1,1,1,2,3,4,,4,2,3,1' AS code) Z

    CONNECT BY LEVEL <= LENGTH(code) - LENGTH(REPLACE(code,',','')) - 1;



    split.png


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
74 질의작성 한건의 데이타를 여러건으로 조회하는 쿼리입니다. 권호일 2012.03.30 9440
73 질의작성 테이블 컬럼 변경 및 추가 정만영 2016.02.29 22075
72 질의작성 테이블 용량 산정 쿼리 성진 2015.12.08 7421
71 질의작성 테이블 명세서 쿼리 1 성진 2017.08.04 3212
70 질의작성 테이블 리스트 취합 SQL 김창휘 2016.03.19 5534
69 질의작성 테이블 데이터 복사 하기 정만영 2009.03.14 22320
68 질의작성 쿼리로 테이블이 존재하는지 확인하기 시난 2009.12.28 23533
67 질의작성 쿼리로 인덱스 정보 확인하기 시난 2009.12.29 24691
66 질의작성 컬럼 사이즈 변경 방법 정만영 2009.03.14 24353
» 질의작성 카디시안(한 Row를 여러 Row) 쿼리문 만들기 1 엄기호 2015.06.30 10957
64 질의작성 중복된 데이터에 대하여 일련번호를 붙이는 방법 admin 2008.11.21 17375
63 질의작성 중복된 데이터를 1개만 남기고 지우는 방법 admin 2008.11.21 17312
62 질의작성 중복데이터 제거 방법 Prototype 2009.07.01 25082
61 질의작성 전체 테이블 UPDATE시 SELECT, UPDATE를 통한 INDEX SCAN방식으로 테이블 X_LOCK을 방지하자! file 이경오 2015.08.13 13831
60 질의작성 입력된 년월 또는 두개의 날짜을 이용하여 달력 및 주차 구하기 1 성진 2016.08.10 5621
59 질의작성 입력된 날자를 이용하여 해당 주차의 모든 날자 구하기 성진 2018.04.10 1136
58 질의작성 임의의 컬럼을 rownum 으로 업데이트 하기 Prototype 2009.07.01 22566
57 질의작성 일정 범위 임의의 정수 생성 방법(random 함수 응용) 손승일 2015.12.22 6495
56 질의작성 요일 값을 반환 받을 수 있는 질의 형태 정만영 2009.03.13 17127
55 질의작성 오류데이타검증 - 숫자 이외의 데이타 확인하는 방법 권호일 2013.01.17 21126
Board Pagination Prev 1 2 3 4 Next
/ 4

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales