MySQL에서 두 문자열을 하나로 합칠 때는 CONCAT() 함수를 사용하면 됩니다. 이 함수는 여러 개의 문자열 인자를 받아 하나의 문자열로 연결해 주며, 두 값 사이에 공백(' ')을 인자로 전달하면 원하는 위치에 공백을 넣어 연결할 수 있습니다.
실습을 위해 먼저 테이블을 생성해 보겠습니다.
1. 테이블 생성하기
mysql> create table DemoTable
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(20),
-> Subject varchar(100)
-> );
Query OK, 0 rows affected (17.73 sec)
2. 샘플 데이터 삽입하기
INSERT 명령을 사용하여 테이블에 몇 개의 레코드를 삽입합니다.
mysql> insert into DemoTable(Name,Subject) values('John','MySQL');
Query OK, 1 row affected (1.19 sec)
mysql> insert into DemoTable(Name,Subject) values('Chris','SQL Server');
Query OK, 1 row affected (0.88 sec)
mysql> insert into DemoTable(Name,Subject) values('Robert','MongoDB');
Query OK, 1 row affected (2.62 sec)3. 저장된 데이터 조회하기
SELECT 문을 사용하여 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
출력 결과
+----+--------+------------+
| Id | Name | Subject |
+----+--------+------------+
| 1 | John | MySQL |
| 2 | Chris | SQL Server |
| 3 | Robert | MongoDB |
+----+--------+------------+
3 rows in set (0.00 sec)
4. 공백을 포함하여 두 문자열 연결하기
다음은 Name 컬럼과 Subject 컬럼의 값을 공백 한 칸으로 구분하여 연결하는 UPDATE 쿼리입니다. concat(Name, ' ', Subject)처럼 두 값 사이에 공백 문자열을 인자로 전달하는 것이 핵심입니다.
mysql> update DemoTable
-> set Subject=concat(Name,' ',Subject);
Query OK, 3 rows affected (0.38 sec)
Rows matched: 3 Changed: 3 Warnings: 0
업데이트가 정상적으로 완료되었으니, 테이블의 모든 레코드를 다시 조회하여 결과를 확인해 보겠습니다.
mysql> select *from DemoTable;
출력 결과
+----+--------+------------------+
| Id | Name | Subject |
+----+--------+------------------+
| 1 | John | John MySQL |
| 2 | Chris | Chris SQL Server |
| 3 | Robert | Robert MongoDB |
+----+--------+------------------+
3 rows in set (0.00 sec)
출력 결과에서 볼 수 있듯이 Subject 컬럼의 값이 'John MySQL', 'Chris SQL Server', 'Robert MongoDB'처럼 이름과 과목명이 공백으로 구분되어 연결된 것을 확인할 수 있습니다.
참고: 세 개 이상의 값을 연결하거나 구분 기호를 반복해서 입력하는 것이 번거롭다면, CONCAT_WS(' ', Name, Subject)처럼 CONCAT_WS() 함수를 사용하면 첫 번째 인자로 지정한 구분 기호(여기서는 공백)를 자동으로 삽입해 주므로 더욱 간편하게 처리할 수 있습니다.