MySQL에서는 REPLACE() 함수를 활용하면 UPDATE 문과 함께 사용하여 텍스트 열의 특정 문자열을 다른 문자열로 간편하게 교체할 수 있습니다. 이 글에서는 실제 예제를 통해 텍스트 열 값을 일괄 변경하는 과정을 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
Code varchar(100)
);
Query OK, 0 rows affected (0.50 sec)varchar(100) 타입의 Code 열 하나를 가진 DemoTable이라는 테이블을 만들었습니다.
2. 샘플 데이터 삽입하기
INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable values('8565-9848-7474');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('9994-6464-8737');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('6574-9090-7643');
Query OK, 1 row affected (0.17 sec)3. 현재 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----------------+ | Code | +----------------+ | 8565-9848-7474 | | 9994-6464-8737 | | 6574-9090-7643 | +----------------+ 3 rows in set (0.00 sec)
4. REPLACE()로 열 값 교체하기
이제 UPDATE 문과 REPLACE() 함수를 조합하여 특정 열 값을 새로운 값으로 교체해 보겠습니다.
mysql> update DemoTable set Code=replace(Code,'9994-6464-8737','9994-9999-88888'); Query OK, 1 row affected (0.10 sec) Rows matched : 3 Changed : 1 Warnings : 0
실행 결과를 보면 총 3개의 행이 검색(Rows matched)되었고, 그중 1개 행(Changed)만 실제로 변경되었음을 알 수 있습니다. REPLACE() 함수는 지정한 문자열과 정확히 일치하는 부분만 교체하기 때문입니다.
5. 변경 결과 확인하기
테이블 레코드를 다시 조회하여 변경이 제대로 적용되었는지 확인합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+-----------------+ | Code | +-----------------+ | 8565-9848-7474 | | 9994-9999-88888 | | 6574-9090-7643 | +-----------------+ 3 rows in set (0.00 sec)
'9994-6464-8737' 값이 '9994-9999-88888'로 성공적으로 교체된 것을 확인할 수 있습니다.
REPLACE() 함수 문법 정리
REPLACE() 함수의 기본 문법은 다음과 같습니다.
REPLACE(컬럼명, '찾을_문자열', '교체할_문자열')
참고로 WHERE 절을 함께 사용하면 특정 조건에 해당하는 행만 대상으로 교체 작업을 수행할 수 있어, 대용량 테이블에서는 불필요한 전체 스캔을 줄여 성능을 개선할 수 있습니다.