MySQL에서 varchar 열의 문자열 부분 제거하기
MySQL에서는 LEFT() 함수와 INSTR() 함수를 조합하면 varchar 열에 저장된 데이터에서 숫자 뒤에 붙은 문자열(예: 'Gigabytes')을 손쉽게 제거할 수 있습니다. 이번 글에서는 실제 예제를 통해 그 과정을 단계별로 살펴보겠습니다.
1. 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
Download varchar(100)
);
Query OK, 0 rows affected (0.53 sec)
2. 데이터 삽입
INSERT 명령을 사용하여 테이블에 샘플 데이터를 입력합니다.
mysql> insert into DemoTable values('120 Gigabytes');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('190 Gigabytes');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('250 Gigabytes');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('1000 Gigabytes');
Query OK, 1 row affected (0.12 sec)3. 데이터 확인
SELECT 문으로 테이블의 전체 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----------------+
| Download |
+----------------+
| 120 Gigabytes |
| 190 Gigabytes |
| 250 Gigabytes |
| 1000 Gigabytes |
+----------------+
4 rows in set (0.00 sec)
4. UPDATE 쿼리로 문자열 부분 제거
다음은 기존 열 데이터를 업데이트하여 공백 이후의 문자열을 제거하는 쿼리입니다.
mysql> update DemoTable set Download=LEFT(Download, INSTR(Download, ' ') - 1);
Query OK, 4 rows affected (0.16 sec)
Rows matched: 4 Changed: 4 Warnings: 0
쿼리 동작 원리:
INSTR(Download, ' '): 값 안에서 첫 번째 공백의 위치를 반환합니다.LEFT(Download, 위치 - 1): 공백 앞까지의 문자, 즉 숫자 부분만 잘라냅니다.
5. 결과 확인
업데이트 후 테이블을 다시 조회해 보겠습니다.
mysql> select *from DemoTable;
'Gigabytes'라는 문자열이 성공적으로 제거되고 숫자만 남은 것을 확인할 수 있습니다.
+----------+
| Download |
+----------+
| 120 |
| 190 |
| 250 |
| 1000 |
+----------+
4 rows in set (0.00 sec)
이처럼 LEFT()와 INSTR() 함수를 활용하면 별도의 프로그래밍 로직 없이 SQL 문 하나만으로 varchar 열에서 불필요한 문자열을 간편하게 정리할 수 있습니다.