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

MySQL 테이블에서 문자 교체하기 – REPLACE() 함수 완벽 가이드

MySQL에서 테이블에 저장된 데이터의 특정 문자를 교체하고 싶다면 REPLACE() 함수를 사용하면 됩니다. REPLACE()는 문자열 안에서 지정한 문자나 부분 문자열을 찾아 다른 값으로 바꿔주는 아주 유용한 함수입니다. 이 글에서는 실제 예제를 통해 단일 문자를 교체하는 방법을 단계별로 살펴보겠습니다.

1. 예제 테이블 생성

먼저 실습에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
-> (
-> Name varchar(20)
-> );
Query OK, 0 rows affected (0.69 sec)

2. 샘플 데이터 삽입

insert 명령을 사용해 테이블에 몇 개의 레코드를 넣어 보겠습니다. 일부러 이름을 'Smitk'처럼 잘못 입력한 데이터를 포함시켰습니다.

mysql> insert into DemoTable values('John Smitk');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('David Miller');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('Adam Smitk');
Query OK, 1 row affected (0.11 sec)

3. 현재 데이터 확인

select 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable;

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

+--------------+
| Name |
+--------------+
| John Smitk |
| David Miller |
| Adam Smitk |
+--------------+
3 rows in set (0.00 sec)

4. REPLACE() 함수로 문자 교체하기

REPLACE() 함수의 기본 문법은 REPLACE(대상_문자열, 찾을_문자열, 교체할_문자열) 형태입니다. 세 개의 인자를 순서대로 받으며, UPDATE 문과 함께 사용하면 테이블의 데이터를 손쉽게 수정할 수 있습니다.

여기서는 이름의 오타인 'k'를 'h'로 바꿔 'Smitk'를 'Smith'로 만들어 보겠습니다.

mysql> update DemoTable
-> set Name=replace(Name,'k','h');
Query OK, 2 rows affected (0.13 sec)
Rows matched: 3 Changed: 2 Warnings: 0

실행 결과 메시지를 자세히 보면 의미 있는 정보를 얻을 수 있습니다. 전체 3개 행(Rows matched: 3) 중 실제로 값이 변경된 행은 2개(Changed: 2)입니다. 'David Miller'에는 'k'가 없기 때문에 변경 대상에서 제외된 것입니다.

5. 변경 결과 확인

테이블을 다시 조회해 결과를 확인해 보겠습니다.

mysql> select *from DemoTable;

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

+--------------+
| Name |
+--------------+
| John Smith |
| David Miller |
| Adam Smith |
+--------------+
3 rows in set (0.00 sec)

출력 결과를 보면 'John Smitk'와 'Adam Smitk'가 각각 'John Smith'와 'Adam Smith'로 성공적으로 수정된 것을 확인할 수 있습니다.

마무리 및 활용 팁

이처럼 MySQL의 REPLACE() 함수를 UPDATE 문과 조합하면 테이블 전체 또는 특정 조건의 데이터에서 원하는 문자를 간단하게 교체할 수 있습니다. 몇 가지 추가 팁을 정리하면 다음과 같습니다.

  • WHERE 절 활용: UPDATE DemoTable SET Name=replace(Name,'k','h') WHERE id=1;처럼 조건을 지정하면 특정 행만 수정할 수 있습니다.
  • SELECT에서 활용: 실제 데이터를 변경하지 않고 조회 결과만 변환하려면 SELECT replace(Name,'k','h') FROM DemoTable;을 사용하세요.
  • 대소문자 구분: REPLACE()는 기본적으로 대소문자를 구분하므로, 'K'와 'k'는 서로 다른 문자로 처리됩니다.