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

MySQL REPLACE() 함수로 열의 특정 값만 손쉽게 교체하는 방법

MySQL에서 테이블의 특정 열에 저장된 값을 다른 값으로 일괄 변경하고 싶다면 REPLACE() 함수를 사용하면 됩니다. 실제 데이터를 수정해야 하므로 SET 절과 함께 UPDATE 문을 조합하여 실행합니다.

기본 문법

열의 기존 값을 새 값으로 바꾸는 기본 문법은 다음과 같습니다.

UPDATE yourTableName
SET yourColumnName = REPLACE(yourColumnName, yourOldValue, yourNewValue);

REPLACE(열이름, 기존값, 새값) 형태로 작성하며, 해당 열에서 기존값이 포함된 모든 행을 찾아 새값으로 치환합니다.

예제 테이블 생성

먼저 실습에 사용할 테이블을 만들어 보겠습니다.

mysql> create table DemoTable
(
   FirstName varchar(100),
   CountryName varchar(100)
);
Query OK, 0 rows affected (0.69 sec)

INSERT 명령으로 몇 개의 레코드를 삽입합니다.

mysql> insert into DemoTable values('John','AUS');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('Bob','AUS');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('Chris','US');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('David','UK');
Query OK, 1 row affected (0.43 sec)
mysql> insert into DemoTable values('Adam','US');
Query OK, 1 row affected (0.09 sec)

데이터 확인

SELECT 문으로 테이블의 전체 레코드를 조회합니다.

mysql> select *from DemoTable;

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

+-----------+-------------+
| FirstName | CountryName |
+-----------+-------------+
| John | AUS |
| Bob | AUS |
| Chris | US |
| David | UK |
| Adam | US |
+-----------+-------------+
5 rows in set (0.00 sec)

특정 값 교체 쿼리 실행

이제 'AUS'라는 국가 코드를 'US'로 변경하는 쿼리를 실행해 보겠습니다.

mysql> update DemoTable set CountryName=replace(CountryName,'AUS','US');
Query OK, 2 rows affected (0.17 sec)
Rows matched: 5 Changed: 2 Warnings: 0

실행 결과를 보면 전체 5개 행 중 조건에 해당하는 2개 행이 성공적으로 변경되었습니다.

변경 결과 확인

테이블을 다시 조회하여 결과를 확인합니다.

mysql> select *from DemoTable;

'AUS'였던 값들이 모두 'US'로 바뀐 것을 확인할 수 있습니다.

+-----------+-------------+
| FirstName | CountryName |
+-----------+-------------+
| John | US |
| Bob | US |
| Chris | US |
| David | UK |
| Adam | US |
+-----------+-------------+
5 rows in set (0.00 sec)

주의 사항

REPLACE() 함수는 문자열의 일부가 일치하면 그 부분까지 함께 치환합니다. 예를 들어 'AUSTRALIA'라는 값이 있다면 'US'와 정확히 일치하지 않더라도 'AUS' 부분이 'US'로 바뀌어 'USTRLIA'가 되는 부작용이 생길 수 있습니다. 이런 경우에는 WHERE CountryName = 'AUS'처럼 WHERE 절을 추가해 정확히 일치하는 행만 업데이트하는 것이 안전합니다.