텍스트(TEXT) 타입으로 저장된 컬럼의 파일 확장자를 변경하려면 UPDATE 문과 REPLACE() 함수를 함께 사용하면 됩니다. REPLACE() 함수는 문자열 안에서 지정한 부분을 찾아 다른 값으로 치환해 주는 MySQL의 기본 문자열 함수로, 확장자 교체 작업에 매우 유용하게 활용됩니다.
예를 들어 여러 컬럼에 다양한 확장자가 저장되어 있고, 이를 모두 새로운 확장자로 바꿔야 하는 상황을 가정해 보겠습니다. 먼저 확장자 값을 담을 TEXT 타입 컬럼들을 가진 테이블을 생성합니다.
1. 테스트용 테이블 생성
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
ProgramExtension1 text,
ProgramExtension2 text,
ImageExtension text
);
Query OK, 0 rows affected (0.52 sec)2. 레코드 삽입
INSERT 문을 사용해 확장자 데이터를 입력합니다.
mysql> insert into DemoTable(ProgramExtension1,ProgramExtension2,ImageExtension)values('.java','.c','.jpeg');
Query OK, 1 row affected (0.18 sec)3. 저장된 데이터 확인
SELECT 문으로 현재 테이블에 저장된 데이터를 조회해 보겠습니다.
mysql> select *from DemoTable;
위 쿼리는 아래와 같은 결과를 출력합니다.
+----+-------------------+-------------------+----------------+ | Id | ProgramExtension1 | ProgramExtension2 | ImageExtension | +----+-------------------+-------------------+----------------+ | 1 | .java | .c | .jpeg | +----+-------------------+-------------------+----------------+ 1 row in set (0.00 sec)
4. UPDATE + REPLACE()로 확장자 변경하기
이제 UPDATE 문과 REPLACE() 함수를 조합해 각 컬럼의 확장자를 한 번에 변경합니다. REPLACE(컬럼명, '기존값', '새값') 형식으로 작성하며, 하나의 UPDATE 문에서 여러 컬럼을 동시에 처리할 수 있습니다.
mysql> update DemoTable
set ProgramExtension1=replace(ProgramExtension1,'.java','.py'),
ProgramExtension2=replace(ProgramExtension2,'.c','.cpp'),
ImageExtension=replace(ImageExtension,'.jpeg','.png');
Query OK, 1 row affected (0.13 sec)
Rows matched: 1 Changed: 1 Warnings: 05. 변경 결과 확인
다시 SELECT 문을 실행해 확장자가 정상적으로 바뀌었는지 확인합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----+-------------------+-------------------+----------------+ | Id | ProgramExtension1 | ProgramExtension2 | ImageExtension | +----+-------------------+-------------------+----------------+ | 1 | .py | .cpp | .png | +----+-------------------+-------------------+----------------+ 1 row in set (0.00 sec)
.java → .py, .c → .cpp, .jpeg → .png로 모두 성공적으로 변경된 것을 확인할 수 있습니다. 이처럼 REPLACE() 함수를 활용하면 소량의 데이터는 물론 대량의 레코드에서도 WHERE 절을 추가하는 방식으로 원하는 범위만 골라 손쉽게 특정 문자열이나 확장자를 일괄 치환할 수 있습니다.