안녕하세요? 배움을 구합니다.
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개가 될수도...
원래 데이터의 중복을 말하는 것으로 잘못 이해했네요..
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 ;