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 |