MySQL에서 문자열 필드에 새로운 문자열을 이어 붙여(연결하여) 업데이트하려면 CONCAT() 함수를 사용하면 됩니다. CONCAT() 함수는 여러 개의 문자열을 하나로 합쳐 주는 MySQL 내장 함수로, UPDATE 문과 함께 활용하면 기존 값 뒤에 원하는 문자열을 손쉽게 추가할 수 있습니다.
1. 예제 테이블 생성
먼저 실습에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
-> (
-> SequenceId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentId varchar(100)
-> );
Query OK, 0 rows affected (0.59 sec)
2. 데이터 삽입
INSERT 명령을 사용하여 테이블에 샘플 레코드를 삽입합니다.
mysql> insert into DemoTable(StudentId) values('STU');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(StudentId) values('STU1');
Query OK, 1 row affected (0.18 sec)SELECT 문으로 테이블의 모든 레코드를 확인해 보겠습니다.
mysql> select *from DemoTable;
출력 결과
+------------+-----------+
| SequenceId | StudentId |
+------------+-----------+
| 1 | STU |
| 2 | STU1 |
+------------+-----------+
2 rows in set (0.00 sec)
3. CONCAT() 함수로 문자열 필드 업데이트
다음은 기존 StudentId 값 뒤에 '-101'이라는 문자열을 연결하여 업데이트하는 쿼리입니다.
mysql> update DemoTable
-> set StudentId=concat(StudentId,'-','101');
Query OK, 2 rows affected (0.14 sec)
Rows matched: 2 Changed: 2 Warnings: 0
업데이트 후 테이블의 전체 레코드를 다시 한번 확인해 보겠습니다.
mysql> select *from DemoTable;
출력 결과
+------------+-----------+
| SequenceId | StudentId |
+------------+-----------+
| 1 | STU-101 |
| 2 | STU1-101 |
+------------+-----------+
2 rows in set (0.00 sec)
참고 사항
위 예제처럼 WHERE 절 없이 UPDATE 문을 실행하면 테이블의 모든 행이 업데이트됩니다. 특정 조건에 해당하는 행만 업데이트하고 싶다면 다음과 같이 WHERE 절을 함께 사용하는 것이 안전합니다.
mysql> update DemoTable
-> set StudentId=concat(StudentId,'-','101')
-> where SequenceId = 1;
또한 CONCAT() 함수는 두 개 이상의 문자열도 자유롭게 연결할 수 있으며, 구분자가 필요한 경우 CONCAT_WS() 함수를 사용하면 더욱 편리합니다.