MySQL에서 문자열이나 숫자로 저장된 값의 첫 번째 자릿수를 제거해야 하는 경우가 종종 있습니다. 예를 들어, 불필요한 접두어가 붙은 데이터를 정리하거나 특정 형식에 맞게 값을 가공할 때 유용합니다. 이럴 때는 SUBSTR() 함수를 사용하면 간단하게 해결할 수 있습니다.
SUBSTR() 함수 기본 문법
SUBSTR() 함수는 문자열의 지정한 위치부터 잘라내어 반환하는 함수입니다. 두 번째 인자를 2로 지정하면 첫 번째 문자를 건너뛰고 두 번째 문자부터 끝까지 반환하게 됩니다.
UPDATE 테이블명 SET 컬럼명 = SUBSTR(컬럼명, 2);
예제 테이블 생성하기
먼저 실습에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable607 (Value varchar(100)); Query OK, 0 rows affected (0.69 sec)
샘플 데이터 삽입하기
INSERT 명령을 사용하여 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable607 values('83967364');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable607 values('10939432');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable607 values('932111');
Query OK, 1 row affected (0.16 sec)현재 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable607;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+----------+ | Value | +----------+ | 83967364 | | 10939432 | | 932111 | +----------+ 3 rows in set (0.00 sec)
첫 번째 숫자를 제거하는 UPDATE 쿼리 실행
이제 SUBSTR() 함수를 활용하여 각 값의 첫 번째 자릿수를 제거하는 쿼리를 실행해 보겠습니다.
mysql> update DemoTable607 set Value=substr(Value,2); Query OK, 3 rows affected (0.14 sec) Rows matched: 3 Changed: 3 Warnings: 0
결과 확인하기
업데이트 후 다시 한번 테이블을 조회하여 변경된 내용을 확인합니다.
mysql> select *from DemoTable607;
실행 결과는 다음과 같습니다.
+---------+ | Value | +---------+ | 3967364 | | 0939432 | | 32111 | +---------+ 3 rows in set (0.00 sec)
주의사항 및 참고 사항
위 출력 결과를 보면 알 수 있듯이, 값이 VARCHAR 타입으로 저장되어 있기 때문에 앞자리가 '0'인 경우(0939432)에도 그대로 유지됩니다. 만약 컬럼이 INT와 같은 숫자형 타입이라면 선행 0은 자동으로 사라지므로 주의해야 합니다.
또한, 이 방법은 모든 행에 일괄 적용되므로 특정 조건의 행만 수정하고 싶다면 WHERE 절을 함께 사용하는 것이 좋습니다.
UPDATE 테이블명 SET 컬럼명 = SUBSTR(컬럼명, 2) WHERE 조건;
이처럼 MySQL의 SUBSTR() 함수를 활용하면 별도의 프로그래밍 로직 없이 SQL 쿼리만으로 문자열의 첫 번째 자릿수를 손쉽게 제거할 수 있습니다.