MySQL의 REPLACE() 함수는 문자열 안에서 특정 부분 문자열을 찾아 다른 문자열로 교체하는 역할을 합니다. 이 함수를 UPDATE 문과 결합하면, 테이블에 저장된 데이터를 검색한 뒤 한 번의 쿼리로 일괄 수정할 수 있어 대량의 데이터를 효율적으로 관리할 때 매우 유용합니다.
기본 문법
REPLACE() 함수와 UPDATE 문을 함께 사용하는 기본 형식은 다음과 같습니다.
UPDATE 테이블이름
SET 컬럼이름 = REPLACE(컬럼이름, '찾을 문자열', '교체할 문자열');
REPLACE() 함수는 세 가지 인자를 받습니다. 첫 번째는 대상이 되는 컬럼 또는 문자열, 두 번째는 찾고자 하는 부분 문자열, 세 번째는 이를 대체할 새로운 문자열입니다.
적용 예제
다음 예제는 Student 테이블의 Father_Name 컬럼에서 'Mr.'라는 호칭을 찾아 'Shri'로 교체하는 쿼리입니다.
mysql> UPDATE Student SET Father_Name = REPLACE(Father_Name, 'Mr.', 'Shri ');
Query OK, 5 rows affected (0.06 sec)
Rows matched: 5 Changed: 5 Warnings: 0
쿼리 실행 후 결과를 조회해 보면 다음과 같습니다.
mysql> SELECT Name, Father_Name FROM Student;
+---------+-----------------+
| Name | Father_Name |
+---------+-----------------+
| Gaurav | Shri Ramesh |
| Aarav | Shri Sanjay |
| Harshit | Shri Lovkesh |
| Gaurav | Shri Ramchander |
| Yashraj | Shri Mohan |
+---------+-----------------+
5 rows in set (0.00 sec)
위 쿼리는 Father_Name 컬럼의 값 중 'Mr.'가 포함된 부분을 모두 찾아 'Shri'로 바꿨습니다. 그 결과 아버지 이름 앞의 호칭이 일괄적으로 변경된 것을 확인할 수 있습니다.
사용 시 주의 사항
REPLACE()는 해당 컬럼 값에 포함된 모든 일치 항목을 교체합니다. 따라서 의도하지 않은 문자열까지 함께 변경될 수 있으므로, 실행 전에 SELECT 문으로 먼저 영향받을 데이터를 확인하는 것이 좋습니다.
특정 행만 선택적으로 수정하고 싶다면 WHERE 절을 함께 사용하면 됩니다. 예를 들어 UPDATE Student SET Father_Name = REPLACE(Father_Name, 'Mr.', 'Shri ') WHERE Name = 'Gaurav'; 처럼 조건을 추가할 수 있습니다.
또한 문자열 비교 방식은 해당 컬럼의 콜레이션(collation) 설정을 따르므로, 대소문자 처리 기준을 미리 확인해 두는 것이 안전합니다. 대량 업데이트 작업 전에는 반드시 데이터를 백업해 두는 습관을 들이는 것이 좋습니다.