MySQL에서 숫자 열의 표시값 앞을 0으로 채우고 싶다면 ZEROFILL 개념을 사용하면 됩니다. ZEROFILL은 컬럼 정의 시 설정한 표시 폭(display width)만큼 필드의 표시값 앞에 0을 채워 출력해 줍니다.
1. 테이블 생성하기
먼저 ZEROFILL 속성을 적용한 테이블을 생성합니다.
mysql> create table DemoTable626 (Value int(5) zerofill); Query OK, 0 rows affected (0.71 sec)
위 예제에서는 int(5)로 표시 폭을 5자리로 지정했기 때문에, 실제 저장된 값이 5자리보다 짧으면 앞부분이 0으로 채워집니다.
2. 레코드 삽입하기
insert 명령을 사용하여 테이블에 몇 개의 레코드를 삽입합니다.
mysql> insert into DemoTable626 values(9); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable626 values(12); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable626 values(567); Query OK, 1 row affected (0.21 sec) mysql> insert into DemoTable626 values(3478); Query OK, 1 row affected (0.13 sec)
3. 결과 확인하기
select 문을 사용하여 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable626;
위 쿼리를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.
+-------+ | Value | +-------+ | 00009 | | 00012 | | 00567 | | 03478 | +-------+ 4 rows in set (0.00 sec)
ZEROFILL 사용 시 참고 사항
ZEROFILL은 실제 저장되는 데이터가 아니라 표시 방식에만 영향을 줍니다. 즉, 내부적으로는 원래 숫자 값 그대로 저장되며, 조회 시에만 지정된 자릿수만큼 앞에 0이 붙어 출력됩니다.
또한 MySQL 8.0.17부터는 정수 타입의 표시 폭(display width)과 ZEROFILL이 더 이상 권장되지 않으므로(deprecated), 새 프로젝트에서는 LPAD() 함수 등을 대안으로 고려하는 것이 좋습니다.