[mysql] 문자열 특정구분자로 자르고 나열하기 0 3 13,710

by 윤 [2015.11.26 13:46:51]


안녕하세요? 배움을 구합니다.

MYSQL 문자열을 특정구분자로 자르고 나열하려고 합니다.

select 
       substring_index(CONTENT, ',', 1)COL1, 
       substring_index(CONTENT, ',', -1)COL2
from TABEL_TEST;

한 컬럼안에 데이터값 = TEST1,TESTER2,T3,TEST_4;

COL1 안에 TEST1, COL2안에TESTER2, COL3안에 T3, COL안에TEST_4

이렇게 넣고자 하는데...

substring_index 사용했을때 앞과 뒤만 나오게 합니다... 사이의 값들도 COL 컬럼으로 만들수 있을가요?

 

select 
       substring_index(CONTENT, ',', 1)COL1, 
       substring_index(substring_index(CONTENT, ',', 2),',',-1)COL2,
       substring_index(substring_index(CONTENT, ',', 3),',',-1)COL3,
       substring_index(substring_index(CONTENT, ',', 4),',',-1)COL4,
       substring_index(substring_index(CONTENT, ',', 5),',',-1)COL5,
       substring_index(substring_index(CONTENT, ',', 6),',',-1)COL6,
       substring_index(substring_index(CONTENT, ',', 7),',',-1)COL7
from TABEL_TEST;

이런식으로 출력이 되길 원합니다... 맞는 쿼리 인가요...

만일 col6과col7이 동일할경우는 col7이 나오지 않아야하는데...;;방법이없을가요

데이터 값은 (,)콤마 기준으로 가변입니다...6개가 될수도...9개가 될수도...4개가 될수도...

by 마농 [2015.11.26 14:03:58]

1. 네. 맞습니다.
  - 위와 같이 SUBSTRING_INDEX 를 두번 사용하시면 됩니다.
2. 중복 제거는?
  - 열을 행으로 변형하여 제거해야 할 듯
3. 가변 컬럼은?
  - 가변 컬럼은 불가능 하구요.
  - 최대 갯수를 정해놓고 고정으로 하셔야 합니다.


by 마농 [2015.11.26 14:28:14]

원래 데이터의 중복을 말하는 것으로 잘못 이해했네요..
SUBSTRING_INDEX 사용결과가 중복된다는 거군요?
content 에 충분한 수의 컴머를 뒤어 붙여 사용하면 됩니다.

SELECT content
     , SUBSTRING_INDEX(c, ',', 1) c1
     , SUBSTRING_INDEX(SUBSTRING_INDEX(c, ',', 2), ',', -1) c2
     , SUBSTRING_INDEX(SUBSTRING_INDEX(c, ',', 3), ',', -1) c3
     , SUBSTRING_INDEX(SUBSTRING_INDEX(c, ',', 4), ',', -1) c4
     , SUBSTRING_INDEX(SUBSTRING_INDEX(c, ',', 5), ',', -1) c5
     , SUBSTRING_INDEX(SUBSTRING_INDEX(c, ',', 6), ',', -1) c6
     , SUBSTRING_INDEX(SUBSTRING_INDEX(c, ',', 7), ',', -1) c7
     , SUBSTRING_INDEX(SUBSTRING_INDEX(c, ',', 8), ',', -1) c8
     , SUBSTRING_INDEX(SUBSTRING_INDEX(c, ',', 9), ',', -1) c9
  FROM (SELECT content
             , CONCAT(content, ',,,,,,,,') c
          FROM (SELECT 'TEST1,TESTER2,T3,TEST_4' content) table_test
        ) a
;

 


by 윤 [2015.11.26 14:43:31]

고맙습니다.정말로 원했던 데이터가 나왔습니다 ㅜㅜ

끙끙 싸메다가 마농님 도움으로 다시 진행 할 수 있게 되었습니다.^^ 

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