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() 함수를 사용하여 원하는 형식으로 문자열을 조합할 수 있습니다.