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

MySQL GROUP_CONCAT 함수로 값에 따옴표 붙이는 방법

MySQL에서는 CONCAT() 함수와 GROUP_CONCAT() 함수를 함께 사용하면 각 행의 값에 따옴표를 붙인 상태로 하나의 문자열로 결합할 수 있습니다. 이 기법은 IN 절에 사용할 값 목록을 만들거나, CSV 형태의 출력이 필요할 때 특히 유용합니다.

기본 문법

SELECT GROUP_CONCAT(CONCAT('''', yourColumnName, '''' )) as anyVariableName FROM yourTableName;

위 문법에서 CONCAT 함수 안의 연속된 작은따옴표('''')는 문자열 내에서 실제 작은따옴표 한 개(')를 의미합니다. 즉, 각 값의 앞뒤에 따옴표가 붙게 됩니다.

예제 테이블 생성

문법을 실제로 확인하기 위해 먼저 테이블을 생성해 보겠습니다.

mysql> create table Group_ConcatDemo
    -> (
    -> Id int NOT NULL AUTO_INCREMENT,
    -> Value int,
    -> PRIMARY KEY(Id)
    -> );
Query OK, 0 rows affected (1.56 sec)

샘플 데이터 삽입

INSERT 명령으로 몇 개의 레코드를 추가합니다.

mysql> insert into Group_ConcatDemo(Value) values(100);
Query OK, 1 row affected (0.24 sec)

mysql> insert into Group_ConcatDemo(Value) values(120);
Query OK, 1 row affected (0.22 sec)

mysql> insert into Group_ConcatDemo(Value) values(234);
Query OK, 1 row affected (0.11 sec)

mysql> insert into Group_ConcatDemo(Value) values(2345);
Query OK, 1 row affected (0.24 sec)

mysql> insert into Group_ConcatDemo(Value) values(5678);
Query OK, 1 row affected (0.14 sec)

mysql> insert into Group_ConcatDemo(Value) values(86879);
Query OK, 1 row affected (0.16 sec)

저장된 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select *from Group_ConcatDemo;

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

+----+-------+
| Id | Value |
+----+-------+
|  1 | 100   |
|  2 | 120   |
|  3 | 234   |
|  4 | 2345  |
|  5 | 5678  |
|  6 | 86879 |
+----+-------+
6 rows in set (0.00 sec)

GROUP_CONCAT으로 값에 따옴표 붙이기

이제 GROUP_CONCAT() 함수를 사용해 각 값을 작은따옴표로 감싸서 출력하는 쿼리입니다.

mysql> select GROUP_CONCAT(CONCAT('''', Value, '''' )) as SingleQuote from Group_ConcatDemo;

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

+-----------------------------------------+
| SingleQuote                             |
+-----------------------------------------+
| '100','120','234','2345','5678','86879' |
+-----------------------------------------+
1 row in set (0.09 sec)

참고 사항

기본적으로 GROUP_CONCAT은 값들을 쉼표(,)로 구분하여 연결합니다. 구분자를 변경하고 싶다면 SEPARATOR 옵션을 사용할 수 있으며, 또한 group_concat_max_len 시스템 변수의 기본값은 1024바이트이므로 대량의 데이터를 처리할 때는 이 값을 조정해야 결과가 잘리지 않습니다.