Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 여러 텍스트 레코드를 하나로 합치는 방법 – GROUP_CONCAT() 완벽 가이드

MySQL GROUP_CONCAT() 함수로 여러 텍스트 레코드 하나로 결합하기

MySQL에서 여러 개의 텍스트 레코드를 하나의 문자열로 합치려면 GROUP_CONCAT() 함수를 사용하면 됩니다. 이 함수는 그룹화된 행들의 값을 지정한 구분자(separator)로 연결하여 단일 문자열로 반환해 줍니다.

아래에서 실제 예제를 통해 단계별로 살펴보겠습니다.

1단계: 테이블 생성하기

먼저 텍스트 값을 저장할 테이블을 생성합니다.

mysql> create table DemoTable1611
-> (
-> Value text
-> );
Query OK, 0 rows affected (0.86 sec)

2단계: 샘플 데이터 삽입하기

INSERT 명령을 사용해 테이블에 여러 개의 레코드를 추가합니다.

mysql> insert into DemoTable1611 values('John');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1611 values('is');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable1611 values('learning');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1611 values('Java');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1611 values('with');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1611 values('MySQL Database');
Query OK, 1 row affected (0.12 sec)

3단계: 저장된 레코드 확인하기

SELECT 문으로 테이블에 저장된 모든 레코드를 조회해 보겠습니다.

mysql> select * from DemoTable1611;

실행 결과는 다음과 같습니다.

+----------------+
| Value |
+----------------+
| John |
| is |
| learning |
| Java |
| with |
| MySQL Database |
+----------------+
6 rows in set (0.00 sec)

4단계: GROUP_CONCAT()으로 레코드 결합하기

이제 여러 텍스트 레코드를 하나의 문장으로 합치는 쿼리를 실행합니다. 이때 SEPARATOR ' ' 옵션을 사용하면 각 값 사이를 공백으로 구분할 수 있습니다.

mysql> select group_concat(Value separator ' ') from DemoTable1611;

실행 결과는 다음과 같습니다.

+-------------------------------------------+
| group_concat(Value separator ' ') |
+-------------------------------------------+
| John is learning Java with MySQL Database |
+-------------------------------------------+
1 row in set (0.00 sec)

정리 및 참고 사항

위 예제처럼 GROUP_CONCAT() 함수를 사용하면 여러 행에 흩어져 있는 텍스트 값을 손쉽게 하나의 문자열로 결합할 수 있습니다.

추가로 알아두면 유용한 팁은 다음과 같습니다.

  • 구분자 변경: SEPARATOR 옵션에 원하는 문자(예: 콤마 ', ', 하이픈 '-')를 지정하면 다양한 형식으로 출력할 수 있습니다.
  • 기본 구분자: SEPARATOR를 생략하면 기본값인 콤마(,)로 연결됩니다.
  • ORDER BY 활용: GROUP_CONCAT() 내부에서 ORDER BY 절을 사용하면 결합되는 값의 순서를 정렬할 수 있습니다.
  • DISTINCT 적용: 중복된 값을 제거하고 싶다면 GROUP_CONCAT(DISTINCT 컬럼명) 형태로 작성하면 됩니다.

GROUP_CONCAT()의 기본 최대 길이는 1024바이트이며, 필요에 따라 group_concat_max_len 시스템 변수를 조정하여 더 긴 문자열도 처리할 수 있습니다.