MySQL의 ZEROFILL 속성은 컬럼 정의 시 설정한 표시 너비(display width)만큼 숫자 값 앞을 0으로 채워서 출력해 주는 기능입니다. 예를 들어 int(18)로 정의된 컬럼에 값 1을 저장하면, 화면에는 000000000000000001처럼 18자리를 맞춰 표시됩니다.
그렇다면 ZEROFILL은 실제로 어떤 상황에서 유용할까요? 아래 예제를 통해 그 역할을 자세히 살펴보겠습니다.
ZEROFILL 비교용 테이블 생성하기
ZEROFILL의 차이를 확인하기 위해 두 개의 컬럼을 가진 테이블을 만들어 보겠습니다. 첫 번째 컬럼에는 zerofill을 적용하고, 두 번째 컬럼에는 적용하지 않습니다.
mysql> create table ZeroFillDemo -> ( -> First int(18) zerofill, -> Second int(18) -> ); Query OK, 0 rows affected (0.63 sec)
테스트 데이터 삽입하기
INSERT 명령어를 사용해 다양한 길이의 숫자 데이터를 삽입합니다.
mysql> insert into ZeroFillDemo values(1,1); Query OK, 1 row affected (0.13 sec) mysql> insert into ZeroFillDemo values(12,12); Query OK, 1 row affected (0.15 sec) mysql> insert into ZeroFillDemo values(123,123); Query OK, 1 row affected (0.10 sec) mysql> insert into ZeroFillDemo values(123456789,123456789); Query OK, 1 row affected (0.20 sec)
SELECT로 결과 확인하기
이제 SELECT 문으로 두 컬럼의 출력 결과가 어떻게 다른지 확인해 보겠습니다.
mysql> select *from ZeroFillDemo;
실행 결과는 다음과 같습니다.
+--------------------+-----------+ | First | Second | +--------------------+-----------+ | 000000000000000001 | 1 | | 000000000000000012 | 12 | | 000000000000000123 | 123 | | 000000123456789 | 123456789 | +--------------------+-----------+ 4 rows in set (0.00 sec)
ZEROFILL의 핵심 포인트
위 출력 결과를 보면 First 컬럼(ZEROFILL 적용)의 값들은 모두 지정된 너비인 18자리에 맞춰 앞부분이 0으로 채워진 것을 확인할 수 있습니다. 반면 Second 컬럼은 원래 값 그대로 출력됩니다.
ZEROFILL은 주문번호, 회원번호, 코드값처럼 일정한 자릿수를 유지해야 하는 데이터를 관리할 때 특히 유용합니다. 단, 실제 저장되는 값은 원래 숫자 그대로이며, 화면에 표시될 때만 0이 채워진다는 점을 기억하시기 바랍니다.