MySQL에서 VARCHAR 타입으로 선언된 컬럼의 값 끝자리(마지막 문자)를 삭제하고, 그 자리에 새로운 두 자리 숫자를 덧붙여 수정하는 방법을 알아보겠습니다. 이 작업에는 UPDATE 문과 CONCAT(), SUBSTRING(), LENGTH() 함수를 함께 사용합니다.
1. 테이블 생성
먼저 Value 컬럼을 VARCHAR(100) 타입으로 선언하여 테이블을 생성합니다.
mysql> create table DemoTable
(
Value varchar(100)
);
Query OK, 0 rows affected (1.80 sec)
2. 샘플 데이터 삽입
insert 명령어를 사용해 테이블에 레코드를 추가합니다.
mysql> insert into DemoTable values('100');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values('1244');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('15789');
Query OK, 1 row affected (0.18 sec)3. 전체 데이터 조회
select 문으로 테이블에 저장된 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+-------+
| Value |
+-------+
| 100 |
| 1244 |
| 15789 |
+-------+
3 rows in set (0.07 sec)
4. 마지막 문자 삭제 후 새 값 추가
다음은 각 값의 마지막 문자를 제거하고, 그 자리에 새로운 두 자리 숫자 '55'를 이어 붙이는 UPDATE 쿼리입니다.
mysql> update DemoTable set Value=concat(substring(Value,1,length(Value)-1), '55');
Query OK, 3 rows affected (0.23 sec)
Rows matched: 3 Changed: 3 Warnings: 0
쿼리 동작 원리를 살펴보면 다음과 같습니다.
length(Value)-1: 값의 전체 길이에서 1을 빼 마지막 문자를 제외한 길이를 구합니다.substring(Value,1,length(Value)-1): 첫 번째 문자부터 마지막 문자 바로 앞까지만 잘라냅니다.concat(..., '55'): 잘라낸 문자열 뒤에 새로운 값 '55'를 연결합니다.
5. 결과 확인
수정된 테이블을 다시 한번 조회해 보겠습니다.
mysql> select *from DemoTable;
모든 값의 마지막 문자가 제거되고 '55'가 추가된 것을 확인할 수 있습니다.
+--------+
| Value |
+--------+
| 1055 |
| 12455 |
| 157855 |
+--------+
3 rows in set (0.00 sec)
이처럼 CONCAT()과 SUBSTRING() 함수를 조합하면 VARCHAR 값의 특정 위치 문자를 손쉽게 교체할 수 있습니다. 다만 위 쿼리는 테이블의 모든 행에 적용되므로, 실무에서는 WHERE 절을 추가해 원하는 조건의 행만 선택적으로 수정하는 것이 안전합니다.