MySQL에서 저장된 사용자 이메일 주소의 도메인 부분을 다른 도메인으로 일괄 변경해야 하는 경우가 있습니다. 예를 들어 개인정보 보호를 위해 데이터를 마스킹하거나, 테스트 환경으로 데이터를 복사할 때 실제 도메인을 숨기고 싶을 수 있습니다. 이럴 때 REPLACE() 함수를 사용하면 간단하게 처리할 수 있습니다.
1. 테이블 생성하기
먼저 이메일 주소를 저장할 테이블을 생성합니다.
mysql> create table DemoTable1345
-> (
-> UserEmailAddress text
-> );
Query OK, 0 rows affected (0.42 sec)
2. 샘플 데이터 삽입하기
INSERT 명령을 사용하여 이메일 주소 데이터를 입력합니다.
mysql> insert into DemoTable1345 values('Carol123@gmail.com');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable1345 values('987Sam@gmail.com');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable1345 values('David_Miller@gmail.com');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1345 values('Bob@gmail.com');
Query OK, 1 row affected (0.14 sec)3. 현재 데이터 확인하기
SELECT 문으로 테이블에 저장된 모든 레코드를 조회합니다.
mysql> select * from DemoTable1345;
실행 결과는 다음과 같습니다.
+------------------------+
| UserEmailAddress |
+------------------------+
| Carol123@gmail.com |
| 987Sam@gmail.com |
| David_Miller@gmail.com |
| Bob@gmail.com |
+------------------------+
4 rows in set (0.00 sec)
4. REPLACE 함수로 도메인 변경하기
다음 쿼리는 @gmail.com 부분을 @amz.com으로 교체하여 이메일 주소를 마스킹합니다.
mysql> update DemoTable1345 set UserEmailAddress=replace(UserEmailAddress, '@gmail.com','@amz.com');
Query OK, 4 rows affected (0.18 sec)
Rows matched: 4 Changed: 4 Warnings: 0
5. 변경 결과 확인하기
업데이트 후 테이블을 다시 조회하여 결과를 확인합니다.
mysql> select * from DemoTable1345;
모든 이메일 주소의 도메인이 성공적으로 변경된 것을 확인할 수 있습니다.
+----------------------+
| UserEmailAddress |
+----------------------+
| Carol123@amz.com |
| 987Sam@amz.com |
| David_Miller@amz.com |
| Bob@amz.com |
+----------------------+
4 rows in set (0.00 sec)
REPLACE 함수 동작 원리
REPLACE(컬럼명, '찾을 문자열', '바꿀 문자열') 형태로 사용하며, 지정한 문자열이 포함된 모든 부분을 찾아 새 문자열로 치환합니다. 위 예제에서는 '@gmail.com'이라는 정확한 문자열만 매칭되므로, 로컬 파트(사용자 이름)는 그대로 유지되고 도메인 부분만 안전하게 변경됩니다.
참고: UPDATE 문은 기존 데이터를 직접 수정하므로, 운영 환경에서 실행하기 전 반드시 데이터 백업을 수행하고 WHERE 절 조건 추가 등을 통해 영향 범위를 신중하게 검토하는 것이 좋습니다.