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

MySQL 문자열에서 특정 위치의 문자를 변경하는 방법 – CONCAT()과 SUBSTRING() 활용 예제

MySQL 문자열에서 특정 문자 변경하기

MySQL에서 문자열의 특정 위치에 있는 문자를 다른 문자로 바꾸고 싶다면 CONCAT() 함수와 SUBSTRING() 함수를 함께 사용하면 됩니다. 이 두 함수를 조합하면 문자열을 원하는 위치를 기준으로 나눈 뒤, 그 사이에 새로운 문자를 삽입하는 방식으로 손쉽게 특정 문자를 교체할 수 있습니다.

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Value varchar(200)
);
Query OK, 0 rows affected (0.60 sec)

샘플 데이터 삽입

INSERT 명령을 사용해 테이블에 레코드를 추가합니다.

mysql> insert into DemoTable(Value) values('98764');
Query OK, 1 row affected (0.17 sec)

저장된 데이터 확인

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

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+----+-------+
| Id | Value |
+----+-------+
| 1  | 98764 |
+----+-------+
1 row in set (0.00 sec)

특정 문자를 변경하는 쿼리

이제 문자열에서 특정 문자를 변경하는 쿼리를 살펴보겠습니다. 아래 예제에서는 '98764'라는 값에서 네 번째 자리에 있던 숫자 '6''X'로 바꾸는 작업을 수행합니다.

mysql> select concat(substring(Value,1,3),'X',substring(Value,5)) from DemoTable;

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

+-----------------------------------------------------+
| concat(substring(Value,1,3),'X',substring(Value,5)) |
+-----------------------------------------------------+
| 987X4                                               |
+-----------------------------------------------------+
1 row in set (0.00 sec)

쿼리 동작 원리

이 쿼리가 어떻게 동작하는지 단계별로 살펴보겠습니다.

1. substring(Value, 1, 3) : 첫 번째 문자부터 세 글자, 즉 '987'을 추출합니다.
2. 'X' : 추출한 문자열 뒤에 새로운 문자 'X'를 붙입니다.
3. substring(Value, 5) : 다섯 번째 문자부터 끝까지, 즉 '4'를 추출하여 이어 붙입니다.

세 부분이 CONCAT() 함수로 하나로 합쳐지면서 최종적으로 '987X4'라는 결과가 만들어집니다. 이처럼 SUBSTRING()으로 잘라낸 문자열 조각들 사이에 원하는 문자를 삽입하면, UPDATE 문 없이도 SELECT 단계에서 특정 위치의 문자를 자유롭게 변경할 수 있습니다.

참고로 실제 테이블의 값을 영구적으로 변경하고 싶다면, 위 SELECT 쿼리를 응용하여 다음과 같이 UPDATE 문에 적용할 수 있습니다.

mysql> update DemoTable
    -> set Value = concat(substring(Value,1,3),'X',substring(Value,5));
Query OK, 1 row affected (0.10 sec)
Rows matched: 1  Changed: 1  Warnings: 0