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

MySQL에서 여러 컬럼 연결하기: CONCAT() 함수 완벽 가이드

MySQL에는 오라클이나 SQL Server와 같은 || 연산자가 기본적으로 제공되지 않습니다. 대신 내장 함수인 CONCAT()을 사용하면 여러 컬럼의 값을 하나의 문자열로 손쉽게 연결할 수 있습니다.

CONCAT() 함수 기본 문법

SELECT CONCAT('(', yourColumnName1, ',', yourColumnName2, ',', yourColumnName3, ...N, ')') AS anyVariableName FROM yourTableName;

CONCAT() 함수는 인자로 전달된 모든 값을 순서대로 이어 붙여 하나의 문자열을 반환합니다. 위 예시에서는 각 컬럼 값 사이에 쉼표를 넣고 전체를 괄호로 감싸는 형태로 출력하고 있습니다.

예제 테이블 생성하기

먼저 실습용 테이블을 생성해 보겠습니다.

mysql> create table Concatenation_OperatorDemo
-> (
-> VendorId int,
-> VendorName varchar(100),
-> VendorCountry varchar(100)
-> );
Query OK, 0 rows affected (0.69 sec)

데이터 삽입

INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into Concatenation_OperatorDemo values(101,'Carol','US');
Query OK, 1 row affected (0.19 sec)

mysql> insert into Concatenation_OperatorDemo values(102,'Bob','UK');
Query OK, 1 row affected (0.18 sec)

mysql> insert into Concatenation_OperatorDemo values(103,'John','US');
Query OK, 1 row affected (0.14 sec)

mysql> insert into Concatenation_OperatorDemo values(104,'David','UK');
Query OK, 1 row affected (0.25 sec)

저장된 데이터 확인

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

mysql> select * from Concatenation_OperatorDemo;

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

+----------+------------+---------------+
| VendorId | VendorName | VendorCountry |
+----------+------------+---------------+
| 101      | Carol      | US            |
| 102      | Bob        | UK            |
| 103      | John       | US            |
| 104      | David      | UK            |
+----------+------------+---------------+
4 rows in set (0.00 sec)

CONCAT()으로 세 개의 컬럼 연결하기

이제 CONCAT() 함수를 사용해 위 테이블의 세 컬럼(VendorId, VendorName, VendorCountry)을 하나로 합쳐 보겠습니다.

mysql> select concat('(', VendorId, ',', VendorName, ',', VendorCountry, ')') AS ConcatenationDemo
-> from Concatenation_OperatorDemo;

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

+-------------------+
| ConcatenationDemo |
+-------------------+
| (101,Carol,US)    |
| (102,Bob,UK)      |
| (103,John,US)     |
| (104,David,UK)    |
+-------------------+
4 rows in set (0.00 sec)

추가 팁: NULL 처리와 CONCAT_WS()

CONCAT() 함수는 인자 중 하나라도 NULL이면 전체 결과가 NULL로 반환됩니다. 이를 방지하려면 IFNULL() 함수를 함께 사용하거나, 구분자를 자동으로 삽입해 주는 CONCAT_WS()(Concat With Separator) 함수를 활용하는 것이 좋습니다.

-- CONCAT_WS 사용 예시: 첫 번째 인자가 구분자 역할을 함
SELECT CONCAT_WS(',', VendorId, VendorName, VendorCountry) AS ConcatenationDemo
FROM Concatenation_OperatorDemo;

이처럼 MySQL에서는 연결 연산자 대신 CONCAT() 또는 CONCAT_WS() 함수를 사용하여 원하는 형식으로 문자열을 조합할 수 있습니다.