Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 특정 문자열만 찾아 바꾸는 방법 – REPLACE() 함수 완벽 가이드

MySQL 데이터베이스에서 문자열을 찾아 다른 값으로 교체하려면 replace() 함수를 사용하면 됩니다. 이 함수는 지정한 조건에 해당하는 행의 특정 문자열만 안전하게 치환해 주기 때문에, 대량의 데이터를 수정할 때 특히 유용합니다.

기본 문법

UPDATE 문과 함께 replace() 함수를 사용하는 기본 문법은 다음과 같습니다.

UPDATE yourTableName
SET yourColumnName = replace(yourColumnName, 'yourExistingValue', 'yourNewValue')
WHERE <yourCondition>;
  • yourTableName : 수정할 테이블 이름
  • yourColumnName : 값을 변경할 컬럼 이름
  • yourExistingValue : 찾을(교체 대상) 문자열
  • yourNewValue : 새로 바꿀 문자열
  • WHERE 절 : 특정 조건에 해당하는 행만 변경하도록 제한

예제 테이블 생성하기

문법을 실제로 이해하기 위해 간단한 테이블을 만들어 보겠습니다. 아래 쿼리로 findAndReplaceDemo 테이블을 생성합니다.

mysql> create table findAndReplaceDemo
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentFirstName varchar(20)
    -> );
Query OK, 0 rows affected (0.49 sec)

샘플 데이터 삽입하기

INSERT 명령으로 학생 이름 몇 개를 입력합니다.

mysql> insert into findAndReplaceDemo(StudentFirstName) values('Carol');
Query OK, 1 row affected (0.15 sec)
mysql> insert into findAndReplaceDemo(StudentFirstName) values('David');
Query OK, 1 row affected (0.15 sec)
mysql> insert into findAndReplaceDemo(StudentFirstName) values('Bob');
Query OK, 1 row affected (0.10 sec)
mysql> insert into findAndReplaceDemo(StudentFirstName) values('Sam');
Query OK, 1 row affected (0.11 sec)
mysql> insert into findAndReplaceDemo(StudentFirstName) values('Mike');
Query OK, 1 row affected (0.13 sec)
mysql> insert into findAndReplaceDemo(StudentFirstName) values('Maxwell');
Query OK, 1 row affected (0.17 sec)

저장된 데이터 확인하기

SELECT 문으로 테이블의 전체 레코드를 조회해 보겠습니다.

mysql> select *from findAndReplaceDemo;

실행 결과는 다음과 같습니다.

+----+------------------+
| Id | StudentFirstName |
+----+------------------+
| 1  | Carol            |
| 2  | David            |
| 3  | Bob              |
| 4  | Sam              |
| 5  | Mike             |
| 6  | Maxwell          |
+----+------------------+
6 rows in set (0.00 sec)

특정 문자열만 찾아 바꾸는 UPDATE 쿼리

이제 핵심 단계입니다. WHERE 절을 활용해 'Maxwell'이라는 값에 해당하는 행만 골라서 'Chris'로 변경해 보겠습니다.

mysql> update findAndReplaceDemo
   -> set StudentFirstName=replace(StudentFirstName,'Maxwell','Chris')
   -> where StudentFirstName='Maxwell';
Query OK, 1 row affected (0.16 sec)
Rows matched: 1 Changed: 1 Warnings: 0

실행 결과를 보면 1개의 행이 일치(Rows matched: 1)하고 1개의 행이 변경(Changed: 1)된 것을 확인할 수 있습니다.

변경 결과 검증하기

테이블을 다시 조회하여 'Maxwell'이 'Chris'로 정상적으로 바뀌었는지 확인해 보겠습니다.

mysql> select *from findAndReplaceDemo;

업데이트된 최종 결과는 다음과 같습니다.

+----+------------------+
| Id | StudentFirstName |
+----+------------------+
| 1  | Carol            |
| 2  | David            |
| 3  | Bob              |
| 4  | Sam              |
| 5  | Mike             |
| 6  | Chris            |
+----+------------------+
6 rows in set (0.00 sec)

마무리 및 주의사항

이처럼 UPDATE + replace() + WHERE 조합을 사용하면 원하는 특정 문자열만 정확히 찾아 바꿀 수 있습니다.

실무에서 활용할 때는 다음 사항을 꼭 기억하세요.

  • WHERE 절 생략 시 주의 : WHERE 조건 없이 실행하면 해당 컬럼의 모든 행에서 문자열이 일괄 치환되므로, 의도하지 않은 대량 변경이 발생할 수 있습니다.
  • 실행 전 백업 권장 : 중요한 운영 데이터라면 UPDATE 실행 전에 반드시 백업을 하거나, SELECT 문으로 먼저 대상 행을 확인하는 것이 안전합니다.
  • 대소문자 구분 : replace() 함수는 기본적으로 대소문자를 구분하므로, 정확한 문자열을 지정해야 합니다.