-
[TIP]문자열을 ROWS로 변경 하는 방법설치&설정 관련/MariaDB & Mysql 2015. 7. 21. 14:05728x90
문자열을 rows로 변환하는 질문이 있어서 해당 건에 대한 처리 내역 입니다.
조건
다음과 같은 Table가 있을 경우
id
name
1
사과
2
배
3
사과,포도
다음과 같은 결과를 도출하기를 원한다.
name
count
배
1
사과
2
포도
1
해당 건을 처리 하기 위해서는 사과,포도 라는 문자열을 2개의 ROW 처럼 인식 하도록 수정 해야 한다.
처리 결과 : http://sqlfiddle.com/#!2/04a0f/2
내역 설명
-- 테이블 & 데이터 설정 CREATE TABLE tablename ( id INT, name VARCHAR(20)); INSERT INTO tablename VALUES (1, '사과'), (2, '배'), (3, '사과,포도'); -- 최대 6개까지 처리 가능 만약 더 필요 하다면 데이터 값을 추가 해야함 CREATE TABLE numbers ( n INT PRIMARY KEY); INSERT INTO numbers VALUES (1),(2),(3),(4),(5),(6); -- number와 join 하여 , 기준의 문자를 여러 row 처럼 인식하도록 처리 select a.name, count(1) from ( SELECT tablename.id, SUBSTRING_INDEX(SUBSTRING_INDEX(tablename.name, ',', numbers.n), ',', -1) name FROM numbers INNER JOIN tablename ON CHAR_LENGTH(tablename.name) -CHAR_LENGTH(REPLACE(tablename.name, ',', ''))>=numbers.n-1 ) a group by a.name
사실 참고 SQL을 가지고 살짝만 수정한 것이다.
질문 원본 : https://www.facebook.com/groups/codingeverybody/1025201834187019/?notif_t=group_comment_reply
참조 내역 : http://stackoverflow.com/questions/17942508/sql-split-values-to-multiple-rows
728x90'설치&설정 관련 > MariaDB & Mysql' 카테고리의 다른 글
MongoDB] 설치 & 권한 설정 (0) 2018.08.17 Mysql Storage Engine MyISAM vs InnoDB (0) 2017.11.07 [MYSQL::TIP] ROWNUM 구현하기 (0) 2014.08.27 [MYSQL::TIP] WHERE 에서 정규식 사용해서 숫자만 들어간 데이터 찾기 (3) 2014.08.21 [ERROR 1175] UPDATE 시 WHERE that uses a KEY column To... ERROR 발생시 (0) 2014.05.13