Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL INT 데이터 타입에서 ZEROFILL 활용법: 숫자 앞자리 0 채우기 완벽 가이드

MySQL ZEROFILL이란 무엇인가?

MySQL에서 숫자 컬럼에 ZEROFILL 속성을 지정하면, 해당 필드의 표시 값이 컬럼 정의에서 지정한 표시 너비(display width)만큼 자동으로 0(zero)으로 채워집니다. 이 기능은 주문 번호, 회원 번호처럼 일정한 자릿수를 유지해야 하는 데이터를 다룰 때 특히 유용합니다.

ZEROFILL 사용 예제

실제 동작을 확인하기 위해 showzerofill이라는 테이블을 생성하고 값을 삽입해 보겠습니다.

mysql> Create Table showzerofill(Val1 INT(5) ZEROFILL, Val2 INT(5));
Query OK, 0 rows affected (0.09 sec)

mysql> Insert into showzerofill(Val1, Val2)
values(1,1),(12,12),(123,123),(1234,1234),(12345,12345);
Query OK, 5 rows affected (0.03 sec)
Records: 5 Duplicates: 0 Warnings: 0

위 예제에서 Val1INT(5) ZEROFILL로 정의했고, Val2는 일반적인 INT(5)로 정의했습니다. 두 컬럼의 차이를 비교하면 ZEROFILL의 효과를 쉽게 이해할 수 있습니다.

조회 결과 비교

테이블을 조회하면 ZEROFILL이 적용된 Val1 컬럼의 값들이 지정된 너비(5자리)까지 0으로 채워져 있는 것을 확인할 수 있습니다.

mysql> Select * from showzerofill;

+-------+-------+
| Val1  | Val2  |
+-------+-------+
| 00001 |     1 |
| 00012 |    12 |
| 00123 |   123 |
| 01234 |  1234 |
| 12345 | 12345 |
+-------+-------+
5 rows in set (0.00 sec)

결과 분석

  • Val1 (ZEROFILL 적용): 값이 5자리 미만일 경우 앞부분이 0으로 채워집니다. 예를 들어 1은 '00001'로, 123은 '00123'으로 표시됩니다.
  • Val2 (ZEROFILL 미적용): 일반적인 우측 정렬 형태로 값이 그대로 표시됩니다.

ZEROFILL 활용 시 알아두어야 할 점

  • ZEROFILL을 적용한 컬럼에는 자동으로 UNSIGNED 속성이 함께 부여됩니다. 따라서 음수 값을 저장할 수 없습니다.
  • 값의 실제 길이가 지정된 표시 너비보다 크더라도 값은 잘리지 않고 전체가 그대로 표시됩니다.
  • 표시 너비(display width)는 저장 공간과는 무관하며, 단지 화면에 표시되는 형식에만 영향을 줍니다.

정리

이처럼 특정 너비를 유지하며 컬럼 값을 표시하고 싶다면, 해당 컬럼을 정의할 때 ZEROFILL 옵션을 사용하면 됩니다. 고정 자릿수의 코드나 번호 체계를 관리하는 데이터베이스 설계에서 매우 실용적인 기능입니다.