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

MySQL에서 문자열 시작 부분의 특정 문자를 검색하고 교체하는 방법

MySQL에서 문자열의 시작 부분에 있는 특정 문자를 검색하여 다른 문자로 교체해야 하는 경우가 종종 있습니다. 이럴 때는 INSERT() 함수를 활용하면 간단하게 처리할 수 있습니다.

이번 글에서는 실제 예제를 통해 우편번호(ZipCode) 데이터의 앞 두 자리를 특정 접두사로 교체하는 방법을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

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

mysql> create table DemoTable
-> (
-> ZipCode varchar(200)
-> );
Query OK, 0 rows affected (0.47 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용하여 테이블에 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable values('9030');
Query OK, 1 row affected (0.15 sec)

mysql> insert into DemoTable values('3902');
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable values('9083');
Query OK, 1 row affected (0.20 sec)

mysql> insert into DemoTable values('9089');
Query OK, 1 row affected (0.13 sec)

3. 전체 레코드 조회하기

SELECT 문을 사용하여 테이블에 저장된 모든 레코드를 확인합니다.

mysql> select *from DemoTable;

출력 결과

+---------+
| ZipCode |
+---------+
| 9030 |
| 3902 |
| 9083 |
| 9089 |
+---------+
4 rows in set (0.00 sec)

4. 문자열 시작 부분 검색 후 교체하기

다음은 문자열 시작 부분의 문자를 검색하고 교체하는 쿼리입니다. 여기서는 '90'으로 시작하는 ZipCode 레코드만 대상으로 작업을 수행합니다.

mysql> update DemoTable set ZipCode=INSERT(ZipCode, 1, 2, 'Country-AUS-')
-> where ZipCode LIKE '90%';
Query OK, 3 rows affected (0.26 sec)
Rows matched: 3 Changed: 3 Warnings: 0

위 쿼리에서 INSERT(ZipCode, 1, 2, 'Country-AUS-')의 의미는 다음과 같습니다.

  • 첫 번째 인수(ZipCode): 수정 대상이 되는 원본 문자열입니다.
  • 두 번째 인수(1): 교체를 시작할 위치로, 문자열의 첫 번째 문자부터 시작한다는 의미입니다.
  • 세 번째 인수(2): 교체될 기존 문자의 개수로, 앞의 2글자('90')가 대상이 됩니다.
  • 네 번째 인수('Country-AUS-'): 기존 문자를 대신하여 삽입될 새로운 문자열입니다.

즉, '90'으로 시작하는 값은 앞의 '90'이 제거되고 그 자리에 'Country-AUS-'가 들어가게 됩니다.

5. 변경 결과 확인하기

업데이트가 정상적으로 적용되었는지 테이블을 다시 조회해 보겠습니다.

mysql> select *from DemoTable;

출력 결과

+----------------+
| ZipCode |
+----------------+
| Country-AUS-30 |
| 3902 |
| Country-AUS-83 |
| Country-AUS-89 |
+----------------+
4 rows in set (0.00 sec)

정리

결과를 보면 '90'으로 시작했던 세 개의 레코드(9030, 9083, 9089)는 앞 두 자리가 'Country-AUS-'로 교체되어 각각 'Country-AUS-30', 'Country-AUS-83', 'Country-AUS-89'로 변경된 것을 확인할 수 있습니다. 반면 '3902'는 조건(WHERE 절)에 해당하지 않으므로 그대로 유지되었습니다.

이처럼 MySQL의 INSERT() 함수와 LIKE 연산자를 함께 사용하면, 특정 패턴으로 시작하는 문자열의 시작 부분만 손쉽게 검색하여 원하는 값으로 교체할 수 있습니다.