MySQL에서 SELECT 절 내에서 텍스트 값을 추가하거나 연결해야 할 때는 CONCAT() 함수를 사용하면 됩니다. 이 함수는 여러 개의 문자열이나 컬럼 값을 하나의 문자열로 합쳐서 반환해 주며, 실무에서 이름과 국가처럼 분리된 데이터를 하나의 문장으로 출력할 때 매우 유용합니다.
1. 예제 테이블 생성하기
먼저 연결 실습에 사용할 테이블을 만들어 보겠습니다. 사용자 ID, 이름, 국가명을 저장하는 간단한 구조입니다.
mysql> create table ConcatenatingDemo -> ( -> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> UserName varchar(20), -> UserCountryName varchar(20) -> ); Query OK, 0 rows affected (0.82 sec)
2. 샘플 데이터 삽입하기
테이블 생성이 완료되면 INSERT 명령으로 몇 개의 레코드를 추가합니다.
mysql> insert into ConcatenatingDemo(UserName,UserCountryName) values('John','US');
Query OK, 1 row affected (0.14 sec)
mysql> insert into ConcatenatingDemo(UserName,UserCountryName) values('Carol','UK');
Query OK, 1 row affected (0.13 sec)
mysql> insert into ConcatenatingDemo(UserName,UserCountryName) values('Bob','AUS');
Query OK, 1 row affected (0.15 sec)
mysql> insert into ConcatenatingDemo(UserName,UserCountryName) values('David','US');
Query OK, 1 row affected (0.29 sec)3. 전체 레코드 조회하기
SELECT 문으로 테이블의 모든 데이터를 확인해 보겠습니다.
mysql> select *from ConcatenatingDemo;
실행 결과는 다음과 같습니다.
+--------+----------+-----------------+ | UserId | UserName | UserCountryName | +--------+----------+-----------------+ | 1 | John | US | | 2 | Carol | UK | | 3 | Bob | AUS | | 4 | David | US | +--------+----------+-----------------+ 4 rows in set (0.00 sec)
4. CONCAT() 함수로 텍스트 연결하기
이제 SELECT 절 안에서 CONCAT() 함수를 사용해 사용자 이름과 국가명을 하나의 문장으로 연결해 보겠습니다. 쉼표(,)로 구분된 인수들이 순서대로 이어져 하나의 문자열이 되며, AS 키워드로 결과 컬럼의 별칭도 지정할 수 있습니다.
mysql> select concat(UserName,' belongs to ( ',UserCountryName,' )') as AddingTextDemo from ConcatenatingDemo;
실행 결과는 다음과 같습니다.
+-------------------------+ | AddingTextDemo | +-------------------------+ | John belongs to ( US ) | | Carol belongs to ( UK ) | | Bob belongs to ( AUS ) | | David belongs to ( US ) | +-------------------------+ 4 rows in set (0.00 sec)
5. CONCAT() 함수 사용 시 알아두면 좋은 팁
- NULL 처리: CONCAT() 함수는 인수 중 하나라도 NULL이면 전체 결과가 NULL로 반환됩니다. NULL을 다른 문자열로 대체하고 싶다면
IFNULL()또는COALESCE()함수를 함께 사용하는 것이 좋습니다. - 구분자 자동 삽입: 여러 값을 일정한 구분자(예: 쉼표)로 연결하려면
CONCAT_WS()함수를 사용하면 더 깔끔하게 처리할 수 있습니다. - 숫자형 데이터 연결: 숫자 컬럼도 CONCAT()에 넣으면 자동으로 문자열로 변환되어 연결됩니다.
이처럼 MySQL의 CONCAT() 함수를 활용하면 별도의 애플리케이션 로직 없이도 SQL 쿼리만으로 원하는 형식의 문자열을 손쉽게 만들어 낼 수 있습니다.