数値を”001″の形で格納する。
“zerofill”を指定する。
参考:
https://www.dbonline.jp/mysql/type/index1.html
mysql> create table test (id smallint(3) zerofill, name varchar(10)); mysql> insert into test values -> (1, 'name1'), -> (2, 'name2'), -> (123, 'name123'); mysql> select * from test; +------+---------+ | id | name | +------+---------+ | 001 | name1 | | 002 | name2 | | 123 | name123 | +------+---------+ mysql> select * from test where id = 2; +------+-------+ | id | name | +------+-------+ | 002 | name2 | +------+-------+ mysql> select * from test where id >= 2; +------+---------+ | id | name | +------+---------+ | 002 | name2 | | 123 | name123 | +------+---------+ mysql> select * from test where id = 002; +------+-------+ | id | name | +------+-------+ | 002 | name2 | +------+-------+
insertや、where句の照合は、頭に0をつけてもつけなくてもOKみたい。
ちなみに、
mysql> select id*2,name from test; +------+---------+ | id*2 | name | +------+---------+ | 2 | name1 | | 4 | name2 | | 246 | name123 | +------+---------+ mysql> select id+001,name from test; +--------+---------+ | id+001 | name | +--------+---------+ | 2 | name1 | | 3 | name2 | | 124 | name123 | +--------+---------+
計算すると、zerofillの型じゃなくなるみたいw
もういっちょ、ちなみに、
mysql> insert into test values (1234, 'name1234'); Query OK, 1 row affected (0.01 sec) mysql> select * from test; +------+----------+ | id | name | +------+----------+ | 001 | name1 | | 002 | name2 | | 123 | name123 | | 1234 | name1234 | +------+----------+
型を、smallint(3)にしてても、
4桁の数値は挿入できました。
かなり脱線するけど、ついでに、
mysql> insert into test values (70000, 'name70000'); ERROR 1264 (22003): Out of range value for column 'id' at row 1
さすがに、smallintの範囲を超える数値は、
受け付けません。
あたりまえかw