** 문자열 결합 **
MySQL 함수중 GROUP_CONCAT과 CONCAT, CONCAT_WS 가 있다.
이 함수를 이용하면 우리가 원하는 결과를 얻을 수 있다.
1. CONCAT
CONCAT는 Field를 하나의 문자열로 묶어주는 함수이다.
다음과 같이 사용할 수 있다.
결과는 다음과 같다.
1|지도리|jidori@nnn.com |
2|지돌스타|jidolstar@nnn.com |
3|방실이|bangsiri@nnn.com |
4|설운도|seolundo@nnn.com |
5|박주영|juyoung@nnn.com |
6|이효리|hyri@nnn.com |
2. CONCAT_WS
CONCAT_WS는 CONCAT과 거의 비슷하다. 하지만 구분자를 한번에 지정할 수 있다는 것이 특징이다.
결과는 CONCAT과 완전 동일하다.
3. GROUP_CONCAT
이 함수를 이용하면 GROUPING된 Record를 원하는 구분자를 이용해 문자열로 통합할 수 있다.
예시는 다음과 같다.
결과는 다음과 같다.
단, 이것만 기억하자. group_concat_max_len 시스템 변수에 의해 최대허용길이를 설정할 수 있는데, default값이 1024이다. 만약 1024byte가 넘어가면 GROUP_CONCAT에 의해 붙은 문자열은 잘린다.
예문2) 결과 컬럼 약쪽에 '(single quote 넣기)
SELECT GROUP_CONCAT("'", part_cd, "'" ) AS part_cd_multi
FROM hanjul.TPartition ;
결과 : '001', '002', '004'
제대로 사용해보기
Query문 부터 보자.
결과는 다음과 같다.
1|지도리|jidori@nnn.com;2|지돌스타|jidolstar@nnn.com |
3|방실이|bangsiri@nnn.com;4|설운도|seolundo@nnn.com;6|이효리|hyri@nnn.com |
5|박주영|juyoung@nnn.com |
이 방법을 사용하면 한번의 Query로 처음에 보여준 PHP코드 처럼 할 필요가 없다는 것을 알 수 있을 것이다.
참고사이트
오라클에서 하는 방법 : http://blog.naver.com/xsoft/150017833358
GROUP_CONCAT() 메뉴얼 : http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
CONCAT() 및 CONCAT_WS() 메뉴얼 : http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat