컬럼으로 분할하여 테이블에 insert 하기 0 3 1,108

by 마늘장아찌 [SQL Query] [2019.09.20 18:36:55]


테이블에 select insert 처리하려고 합니다.

sample은 아래와 같이 인터페이스로 넘어오는데 구분자가 :으로 되어있구요

기존에 plsql 에서는 instr으로 변수에 넣어서 insert 하는 형태인데

쿼리 한방에 넣어볼까 합니다. 15개 컬럼으로 : 제외하고 파싱되어 insert되는 형태인데요... 잘 안되네요... 

insert ...

SELECT '0:1:2:1:2:3:2:3:4:3:4:5:4:5:6' v
FROM dual

 

connect by 로 하면 열 하나에 행 15개로 나오고 이걸 다시 pivot을 해야하나 하니...

원래 형태가 다시되는데... 흠... 뭘한거지 싶구요...

컬럼별 하나하나 한줄로 instr으로 하는것이 아니라 하나로 각 컬럼으로 insert 하려는 거애요...

하나하나 하는거면 기존에 변수로 처리하는것과 다를게 없거든요...

by 우리집아찌 [2019.09.23 09:17:15]
INSERT ...

WITH T AS (
SELECT '0:1:2:1:2:3:2:3:4:3:4:5:4:5:6' v FROM DUAL 
)

SELECT REGEXP_SUBSTR(V,'[^:]+' , 1 , LV  ) V1 
  FROM ( SELECT '0:1:2:1:2:3:2:3:4:3:4:5:4:5:6' v FROM DUAL ) 
     , ( SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= (SELECT REGEXP_COUNT(V,':') FROM T ) + 1 )  

 


by 마늘장아찌 [2019.09.23 10:21:59]

행으로 나오는게 아니고 한줄에 열로 나와야 합니다만...


by 우리집아찌 [2019.09.23 10:25:07]

 
SELECT REGEXP_SUBSTR(V,'[^:]+' , 1 , 1  ) V1 
      ,REGEXP_SUBSTR(V,'[^:]+' , 1 , 2  ) V2
      ,REGEXP_SUBSTR(V,'[^:]+' , 1 , 3  ) V3
      ,REGEXP_SUBSTR(V,'[^:]+' , 1 , 4  ) V4
      ,REGEXP_SUBSTR(V,'[^:]+' , 1 , 5  ) V5
      ,REGEXP_SUBSTR(V,'[^:]+' , 1 , 6  ) V6
      ,REGEXP_SUBSTR(V,'[^:]+' , 1 , 7  ) V7
      ,REGEXP_SUBSTR(V,'[^:]+' , 1 , 8  ) V8
      ,REGEXP_SUBSTR(V,'[^:]+' , 1 , 9  ) V9
      ,REGEXP_SUBSTR(V,'[^:]+' , 1 , 10 ) V10
      ,REGEXP_SUBSTR(V,'[^:]+' , 1 , 11 ) V11
      ,REGEXP_SUBSTR(V,'[^:]+' , 1 , 12 ) V12
      ,REGEXP_SUBSTR(V,'[^:]+' , 1 , 13 ) V13
      ,REGEXP_SUBSTR(V,'[^:]+' , 1 , 14 ) V14
      ,REGEXP_SUBSTR(V,'[^:]+' , 1 , 15 ) V15

  FROM ( SELECT '0:1:2:1:2:3:2:3:4:3:4:5:4:5:6' v FROM DUAL ) 

 

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