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

MySQL에서 DISTINCT와 GROUP_CONCAT, CONCAT으로 단일 열 값에 따옴표 붙이는 방법

MySQL에서 단일 열에 저장된 여러 값을 각각 따옴표로 묶어 하나의 문자열로 합치고 싶다면 group_concat() 함수와 replace() 함수를 함께 사용하면 됩니다. 이 글에서는 실제 예제를 통해 단계별로 방법을 살펴보겠습니다.

1단계: 테이블 생성

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable1799
     (
     EmployeeId varchar(20)
     );
Query OK, 0 rows affected (0.00 sec)

2단계: 데이터 삽입

insert 명령을 사용해 쉼표로 구분된 직원 ID 값들을 테이블에 삽입합니다.

mysql> insert into DemoTable1799 values('101,102,103,104');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1799 values('106,109');
Query OK, 1 row affected (0.00 sec)

3단계: 저장된 데이터 확인

select 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select * from DemoTable1799;

위 쿼리는 다음과 같은 결과를 출력합니다.

+-----------------+
| EmployeeId      |
+-----------------+
| 101,102,103,104 |
| 106,109         |
+-----------------+
2 rows in set (0.00 sec)

DISTINCT와 GROUP_CONCAT, CONCAT으로 값에 따옴표 붙이기

이제 group_concat()concat(), 그리고 distinct를 조합하여 각 값을 작은따옴표로 묶는 쿼리를 실행해 보겠습니다.

mysql> select group_concat(distinct concat("'", replace(EmployeeId, "," , "','") , "'")) as Output from DemoTable1799;

위 쿼리는 다음과 같은 결과를 출력합니다.

+-------------------------------------+
| Output                              |
+-------------------------------------+
| '101','102','103','104','106','109' |
+-------------------------------------+
1 row in set (0.00 sec)

쿼리 동작 원리

이 쿼리가 어떻게 동작하는지 살펴보면 다음과 같습니다.

1. replace()로 구분자 변환: replace(EmployeeId, ",", "','")는 쉼표(,)를 ','로 바꿉니다. 예를 들어 101,102,103,104101','102','103','104가 됩니다.

2. concat()으로 따옴표 추가: 앞뒤에 작은따옴표를 붙여 '101','102','103','104' 형태의 완전한 문자열을 만듭니다.

3. distinct로 중복 제거: group_concat(distinct ...)를 사용하므로 결과에서 중복된 값은 자동으로 제거됩니다. 이 예제에서 두 행의 데이터가 하나의 결과로 병합되면서 중복 없이 모든 직원 ID가 따옴표로 묶인 형태로 출력되었습니다.

이 방식은 IN 절에 동적으로 값을 전달해야 하거나, CSV 형태의 데이터를 SQL 문자열 목록으로 변환해야 할 때 특히 유용하게 활용할 수 있습니다.