본문 바로가기
개발/MySQL(SQL)

MySQL의 문자열 연결 함수 CONCAT 사용시 구분자 넣기!! (Group_concat 포함)

by 비손 2011. 11. 30.

문자열을 연결할 때 사용하는 MySQL 함수의 이름이 바로 'CONCAT'입니다.
이 함수를 이용하면 문자열을 그냥 쭉~ 이어줍니다.

mysql> SELECT CONCAT('My', 'S', 'QL');
        -> 'MySQL'

출처: http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

그런데 그 데이터가 구분되어야 할 때는? 구분자를 넣어주어야겠죠?
그 때 사용할 수 있는 함수가 바로 'CONCAT_WS'(Concatenate With Separator)입니다.

mysql> SELECT CONCAT_WS(',','First name','Second name','Last Name');
        -> 'First name,Second name,Last Name'

출처: http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

이런식이죠~
CONCAT_WS 함수의 첫번째 인수 부분이 Separator의 종류를 의미한다는건 보시면 알 수 있으리라 생각됩니다.

이정도면 모든 쿼리를 다 다룰수만 있을 것 같은 나의 인생에 Group 이라는 개념이 끼어듭니다.
오!! 좋아!! 그룹으로 묶은 데이터도 CONCAT을 할 수 있는 함수가 있을 것이다!!
해서 찾아보니 'GROUP_CONCAT'이라는 함수가 있군요!

mysql> SELECT student_name,
    ->     GROUP_CONCAT(test_score)
    ->     FROM student
    ->     GROUP BY student_name;

출처: http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

그런데 이녀석은 Separator를 바꿀수도 없고, 안넣은 상태로 이을수도 없고 무조건 결과가 'A,B,C' 처럼 ','로 나뉘는군요!
하지만 Separator를 바꿀수 있는 방법이 있습니다.

GROUP_CONCAT(test_score SEPARATOR ':')

처럼 함수를 사용하면 ',' 가 아닌 ':'로 구분을 짓더군요!!
유용하게 사용할 수 있을 것 같습니다!!