MySQL에서 테이블의 특정 필드(컬럼)에 저장된 문자열을 찾아서 다른 문자열로 교체하려면 REPLACE() 함수를 UPDATE 문과 함께 사용하면 됩니다. 이 방법은 파일 경로 수정, 도메인 변경, 오타 일괄 수정 등 대량의 데이터를 한 번에 처리할 때 특히 유용합니다.
기본 문법
필드에서 문자열을 찾아 바꾸는 기본 문법은 다음과 같습니다.
UPDATE yourTableName
SET yourColumnName = REPLACE(yourColumnName, yourOldValue, yourNewValue);
- yourTableName: 데이터를 수정할 테이블 이름
- yourColumnName: 문자열을 교체할 컬럼 이름
- yourOldValue: 찾을 기존 문자열
- yourNewValue: 교체할 새로운 문자열
예제 테이블 생성하기
문법을 실제로 이해하기 위해 예제 테이블을 먼저 만들어 보겠습니다. 아래 쿼리로 FindReplaceDemo 테이블을 생성합니다.
mysql> CREATE TABLE FindReplaceDemo
-> (
-> FileId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> FileDirectory text
-> );
Query OK, 0 rows affected (0.92 sec)
샘플 데이터 삽입하기
INSERT 명령을 사용해 몇 개의 레코드를 추가합니다.
mysql> INSERT INTO FindReplaceDemo(FileDirectory) VALUES('C://User//MySQL');
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO FindReplaceDemo(FileDirectory) VALUES('D://WebsiteImage//image1.jpg');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO FindReplaceDemo(FileDirectory) VALUES('E://Java//AdvancedJava');
Query OK, 1 row affected (0.20 sec)데이터 조회하기
SELECT 문으로 테이블의 모든 레코드를 확인해 보겠습니다.
mysql> SELECT * FROM FindReplaceDemo;
실행 결과는 다음과 같습니다.
+--------+------------------------------+
| FileId | FileDirectory |
+--------+------------------------------+
| 1 | C://User//MySQL |
| 2 | D://WebsiteImage//image1.jpg |
| 3 | E://Java//AdvancedJava |
+--------+------------------------------+
3 rows in set (0.00 sec)
REPLACE()로 문자열 찾아 바꾸기
이제 UPDATE 문과 REPLACE() 함수를 조합하여 'E://Java//AdvancedJava' 값을 'E://Java//SpringAndHibernateFramework'로 교체하는 쿼리를 실행합니다.
mysql> UPDATE FindReplaceDemo
-> SET FileDirectory = REPLACE(FileDirectory, 'E://Java//AdvancedJava', 'E://Java//SpringAndHibernateFramework');
Query OK, 1 row affected (0.12 sec)
Rows matched: 3 Changed: 1 Warnings: 0
실행 결과를 보면 전체 3개 행이 검색(Rows matched)되었지만, 실제로 값이 변경된 행은 1개(Changed: 1)입니다. 즉, 일치하는 문자열이 있는 행만 업데이트됩니다.
변경 결과 확인하기
다시 SELECT 문으로 테이블을 조회하여 값이 제대로 교체되었는지 확인합니다.
mysql> SELECT * FROM FindReplaceDemo;
문자열이 성공적으로 교체된 최종 결과는 다음과 같습니다.
+--------+---------------------------------------+
| FileId | FileDirectory |
+--------+---------------------------------------+
| 1 | C://User//MySQL |
| 2 | D://WebsiteImage//image1.jpg |
| 3 | E://Java//SpringAndHibernateFramework |
+--------+---------------------------------------+
3 rows in set (0.00 sec)
정리 및 주의사항
MySQL에서 필드 내 문자열을 찾아 바꾸는 작업은 UPDATE ... SET 컬럼 = REPLACE(컬럼, 기존값, 새값) 형태로 간단하게 처리할 수 있습니다. 다만 몇 가지 주의할 점이 있습니다.
- WHERE 절 활용: 특정 조건의 행만 수정하려면 WHERE 절을 함께 사용하는 것이 안전합니다.
- 백업 권장: UPDATE 문은 실행 후 되돌릴 수 없으므로, 중요한 데이터라면 반드시 백업 후 진행하세요.
- 대소문자 구분: REPLACE() 함수는 기본적으로 대소문자를 구분하므로 정확한 문자열을 지정해야 합니다.
- 부분 일치: REPLACE()는 컬럼 값 전체가 아니라 포함된 부분 문자열도 교체하므로, 의도치 않은 변경이 없는지 미리 SELECT로 확인하는 것이 좋습니다.