MySQL에서 두 개 이상의 컬럼 값을 하나의 문자열로 합쳐야 하는 경우가 자주 있습니다. 예를 들어 국가 코드와 국가 이름을 각각 저장하고 있지만, 조회 시에는 100-US처럼 하이픈(-)으로 구분된 하나의 값으로 출력하고 싶다면 CONCAT() 함수를 사용하면 됩니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable835(
CountryCode int,
CountryName varchar(100)
);
Query OK, 0 rows affected (0.63 sec)
2. 샘플 데이터 삽입하기
INSERT 명령을 사용하여 테이블에 레코드를 추가합니다.
mysql> insert into DemoTable835 values(100,'US');
Query OK, 1 row affected (0.36 sec)
mysql> insert into DemoTable835 values(101,'UK');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable835 values(102,'AUS');
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable835 values(103,'ENG');
Query OK, 1 row affected (0.09 sec)
3. 데이터 조회하기
SELECT 문을 사용하여 테이블의 전체 레코드를 확인합니다.
mysql> select *from DemoTable835;
위 쿼리는 다음과 같은 결과를 출력합니다.
+-------------+-------------+
| CountryCode | CountryName |
+-------------+-------------+
| 100 | US |
| 101 | UK |
| 102 | AUS |
| 103 | ENG |
+-------------+-------------+
4 rows in set (0.00 sec)
4. CONCAT() 함수로 두 컬럼 값 연결하기
두 개의 컬럼 값을 하나의 컬럼으로 연결하는 쿼리는 다음과 같습니다. CONCAT() 함수 안에 컬럼과 구분자로 사용할 하이픈('-')을 순서대로 넣어주면 됩니다.
mysql> select concat(CountryCode,'-',CountryName) from DemoTable835;
실행 결과는 다음과 같습니다.
+-------------------------------------+
| concat(CountryCode,'-',CountryName) |
+-------------------------------------+
| 100-US |
| 101-UK |
| 102-AUS |
| 103-ENG |
+-------------------------------------+
4 rows in set (0.00 sec)
추가 팁: 별칭(Alias) 활용하기
결과 컬럼의 이름을 더 읽기 좋게 만들고 싶다면 AS 키워드를 사용해 별칭을 지정할 수 있습니다.
mysql> select concat(CountryCode,'-',CountryName) AS CountryInfo from DemoTable835;
이렇게 하면 결과 컬럼명이 CountryInfo로 표시되어 가독성이 크게 향상됩니다. 또한 CONCAT_WS() 함수를 사용하면 구분자를 한 번만 지정하여 여러 컬럼을 연결할 수도 있습니다. 예를 들어 CONCAT_WS('-', CountryCode, CountryName)처럼 작성하면 동일한 결과를 얻을 수 있습니다.