MySQL에서 두 개의 컬럼을 하나로 합쳐서 조회하고 싶을 때는 CONCAT() 함수를 사용하면 됩니다. CONCAT()은 여러 문자열이나 컬럼 값을 이어 붙여 하나의 문자열로 반환해 주는 아주 유용한 함수입니다.
CONCAT() 함수 기본 문법
select CONCAT(yourColumnName1, ' ', yourColumnName2) as anyVariableName from yourTableName;
위 문법에서 작은따옴표로 묶인 공백(' ')은 두 컬럼 사이에 들어갈 구분자입니다. 필요에 따라 쉼표, 하이픈 등 원하는 문자로 바꿔 사용할 수 있습니다.
예제 테이블 생성하기
개념을 이해하기 위해 먼저 예제 테이블을 만들어 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table concatenateTwoColumnsDemo
-> (
-> StudentId int,
-> StudentName varchar(200),
-> StudentAge int
-> );
Query OK, 0 rows affected (1.06 sec)샘플 데이터 삽입하기
테이블을 생성했다면 이제 학생 정보 레코드를 몇 개 삽입해 보겠습니다.
mysql> insert into concatenateTwoColumnsDemo values(1,'Sam',21); Query OK, 1 row affected (0.18 sec) mysql> insert into concatenateTwoColumnsDemo values(2,'David',24); Query OK, 1 row affected (0.17 sec) mysql> insert into concatenateTwoColumnsDemo values(3,'Carol',22); Query OK, 1 row affected (0.13 sec) mysql> insert into concatenateTwoColumnsDemo values(4,'Johnson',19); Query OK, 1 row affected (0.17 sec)
전체 데이터 조회하기
SELECT 문을 사용하여 테이블의 모든 레코드를 확인합니다.
mysql> select *from concatenateTwoColumnsDemo;
실행 결과는 다음과 같습니다.
+-----------+-------------+------------+ | StudentId | StudentName | StudentAge | +-----------+-------------+------------+ | 1 | Sam | 21 | | 2 | David | 24 | | 3 | Carol | 22 | | 4 | Johnson | 19 | +-----------+-------------+------------+ 4 rows in set (0.00 sec)
CONCAT()으로 두 컬럼 연결하기
이제 CONCAT() 함수를 실제로 적용해 보겠습니다. 여기서는 StudentName 컬럼과 StudentAge 컬럼을 연결하여 이름과 나이가 함께 표시되도록 합니다.
mysql> select CONCAT(StudentName, ' ', StudentAge) as NameAndAgeColumn from concatenateTwoColumnsDemo;
두 컬럼이 연결된 결과는 다음과 같습니다.
+------------------+ | NameAndAgeColumn | +------------------+ | Sam 21 | | David 24 | | Carol 22 | | Johnson 19 | +------------------+ 4 rows in set (0.00 sec)
참고 사항
CONCAT() 함수에서 연결하는 값 중 하나라도 NULL이면 전체 결과가 NULL로 반환됩니다. NULL 처리가 필요하다면 IFNULL() 또는 COALESCE() 함수와 함께 사용하는 것이 좋습니다. 또한 세 개 이상의 컬럼도 동일한 방식으로 자유롭게 연결할 수 있습니다.