MySQL에서 테이블의 모든 행에 있는 텍스트 값 앞에 특정 문자열(접두사)을 추가하고 싶다면 CONCAT() 함수를 사용하면 됩니다. CONCAT() 함수는 여러 문자열을 하나로 연결해 주는 함수로, UPDATE 문과 함께 사용하면 기존 데이터 앞에 원하는 접두사를 손쉽게 붙일 수 있습니다.
1. 예제 테이블 생성
먼저 실습에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Subject varchar(200)
);
Query OK, 0 rows affected (1.36 sec)위 쿼리는 자동 증가하는 기본키(Id)와 과목명(Subject) 컬럼을 가진 테이블을 만듭니다.
2. 샘플 데이터 삽입
INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable(Subject) values('MySQL');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(Subject) values('MongoDB');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(Subject) values('Java');
Query OK, 1 row affected (0.12 sec)3. 현재 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
출력 결과
+----+---------+ | Id | Subject | +----+---------+ | 1 | MySQL | | 2 | MongoDB | | 3 | Java | +----+---------+ 3 rows in set (0.00 sec)
4. 접두사를 추가하는 UPDATE 쿼리 실행
이제 CONCAT() 함수를 활용해 모든 행의 Subject 값 앞에 "My Favourite Subject is "라는 접두사를 붙이는 쿼리를 실행합니다.
mysql> update DemoTable set Subject=concat("My Favourite Subject is ",Subject);
Query OK, 3 rows affected (0.12 sec)
Rows matched: 3 Changed: 3 Warnings: 0쿼리가 정상적으로 실행되어 3개의 행이 모두 변경되었습니다.
5. 변경된 결과 확인
다시 SELECT 문으로 테이블을 조회해 업데이트 결과를 확인해 보겠습니다.
mysql> select *from DemoTable;
출력 결과
+----+---------------------------------+ | Id | Subject | +----+---------------------------------+ | 1 | My Favourite Subject is MySQL | | 2 | My Favourite Subject is MongoDB | | 3 | My Favourite Subject is Java | +----+---------------------------------+ 3 rows in set (0.00 sec)
정리
이처럼 UPDATE 문과 CONCAT() 함수를 조합하면 WHERE 절 없이 전체 행을 대상으로, 또는 WHERE 절을 추가해 특정 조건의 행만 대상으로 접두사를 일괄 추가할 수 있습니다. 참고로 접미사를 뒤에 붙이고 싶다면 concat(Subject, "문자열")처럼 인수 순서만 바꿔주면 됩니다. 대량의 데이터를 수정할 때는 반드시 백업 후 작업하는 것이 안전합니다.