Data/MySQL

[MySQL] 문자열 결합하기: CONCAT, GROUP_CONCAT

누구세연 2024. 7. 8. 20:42

CONCAT과 GROUP_CONCAT 언제 어떻게 사용하는 게 적절할까요? 🤔

CONCAT과 GROUP_CONCAT는 MySQL에서 문자열을 결합하는 데 사용되는 함수입니다.

CONCAT은 여러 문자열을 하나의 문자열로 결합하고, GROUP_CONCAT은 그룹화된 결과에서 여러 값을 단일 문자열로 결합합니다.

 

CONCAT

CONCAT 함수는 두 개 이상의 문자열을 결합하여 하나의 문자열을 만듭니다.

SELECT CONCAT('Hello', ' ', 'World') AS greeting;

위와 같은 예시는 아래와 같이 출력됩니다. CONCAT 함수는 인수로 전달된 문자열들을 순서대로 합쳐서 하나의 문자열로 만들어줍니다.

실행 결과

 

테이블에서도 사용할 수 있습니다.

SELECT CONCAT(user_name, ' ', age) AS user
FROM user_info;

실핼 결과

사용자의 이름과 나이를 결합하여 열을 생성합니다.

 

 

GROUP_CONCAT

GROUP_CONCAT 함수는 그룹화된 여러 행의 데이터를 하나의 문자열로 결합할 때 사용합니다.

특히, GROUP BY 절과 함께 사용하여 그룹 내의 데이터를 하나의 문자열로 합칠 수 있습니다.

 

예를 들어 students 테이블이 있고, 각 학생이 여러 과목을 수강한다고 가정해 봅시다.

예시 데이터

학생별로 수강하는 과목을 하나의 문자열로 결합하려면 GROUP_CONCAT을 사용할 수 있습니다.

SELECT student_name, GROUP_CONCAT(subject SEPARATOR ', ') AS subjects
FROM students
GROUP BY student_name;

이 쿼리는 학생별로 수강 과목을 쉼표로 구분된 문자열로 결합합니다.

실행 결과

 

GROUP_CONCAT을 사용할 때 정렬 순서를 지정할 수도 있습니다.

SELECT student_name, GROUP_CONCAT(subject ORDER BY subject ASC SEPARATOR ', ') AS subjects
FROM students
GROUP BY student_name;

실행 결과

 

 

CONCAT과 GROUP_CONCAT 함께 사용하기

두 함수를 함께 사용하여 더욱 복잡한 문자열 결합을 할 수 있습니다.

 

예를 들어, orders 테이블이 있고 각 주문에 여러 상품이 있다고 가정해 봅시다.

데이터 예시

주문별로 상품 목록을 하나의 문자열로 결합하고 그 결과를 다른 문자열로 결합해 보겠습니다.

SELECT 
    order_id,
    CONCAT('Order includes: ', GROUP_CONCAT(product_name ORDER BY product_name SEPARATOR ', ')) AS order_summary
FROM orders
GROUP BY order_id;

이 쿼리는 각 주문에 대해 상품 목록을 결합한 후, "Order includes:"라는 문자열과 함께 결과를 결합합니다.

실행 결과

이와 같이 CONCAT과 GROUP_CONCAT을 함께 사용하면 데이터베이스 내에서 유연하게 문자열을 결합하여 다양한 형식의 결과를 생성할 수 있습니다.

 

 

-  `CONCAT`: 여러 문자열을 하나로 결합합니다.
-  `GROUP_CONCAT`그룹화된 여러 행의 데이터를 하나의 문자열로 결합합니다.
-  두 함수를 함께 사용하여 복잡한 문자열 결합을 수행할 수 있습니다.

MySQL에서 문자열 결합이 필요할 때 `CONCAT`과 `GROUP_CONCAT` 함수를 적절히 사용하면 매우 유용합니다.
데이터베이스에서 쉽게 문자열을 처리하고 싶은 분들에게 많은 도움이 될 것입니다.

'Data > MySQL' 카테고리의 다른 글

[MySQL] 쿼리 절 순서  (0) 2024.08.04
[MySQL] binlog(바이너리 로그)란?  (0) 2024.07.16
[MySQL] UPSERT(UPDATE + INSERT)  (0) 2024.06.28
[MySQL] Timestamp vs DateTime  (0) 2024.04.02
[MySQL] MySQL 버전 확인  (0) 2023.10.28