[MySql] 타입지정시 괄호안의 숫자
참고 – BIGINT(20)에서 괄호안의 숫자
괄호안의 숫자는 디스플레이 너비 속성display width attribute 즉, 자릿수를 나타내는데 zorefill
속성을 사용할 경우 자릿수 만큼 유효숫자 0을 채우는 것이다. 자릿수를 지정하지 않았을 경우에는 INT의 기본값은 11, BIGINT의 기본값은 20으로 자릿수가 자동 설정된다. 예컨대 INT(3)
으로 zerofill
속성을 사용해 id컬럼을 생성하면, id값으로 1, 2, 3, … 998, 999, 1000, 1001을 저장했을 때, 데이터베이스에는 001, 002, 003, … 998, 999, 1000, 1001로 기록이 된다. 즉 숫자형뒤의 괄호안의 숫자만큼 자릿수에 유효숫자가 채워진다. 그리고 괄호안의 숫자를 넘는 자릿수의 수에 대해서는 상관없이 기록이되고, 숫자형이 허용하는 범위까지 값을 저장할 수 있다. 헷갈리면 안되는 것이 괄호안의 숫자가 자릿수를 규정하는 것은 아니라는 것이다. 즉, zerofill
속성을 사용하지 않는 경우라면 괄호안의 숫자는 의미가 없다. 그리고 zerofill
속성을 사용하는 것은 양수에만 가능하므로, 자동으로 unsigned
속성이 적용된다.
그리고 MySQL 공식 문서에 따르면 버전 8.0.17부터는 zerofill
속성은 숫자형에 대해 더 이상 사용되지 않고, 향후 버전에서는 제거 될 예정이다. zerofill
속성을 일정의 자릿수를 가진 우편번호, 주민등록번호처럼 ‘0으로 시작하는 숫자데이터’에 사용하는 사람들이 있는 모양인데, 향후 MySQL 버전에서 zerofill
속성이 제외되면 LPAD()
함수를 사용하여 원하는 자릿수만큼 0으로 채우거나, 형식이 지정된 숫자를 CHAR형 컬럼에 저장하면 된다.