MySQL insert into table with 00001自动转换为1

MySQL insert into table with 00001自动转换为1,mysql,sql,Mysql,Sql,我有一个列id为INT(11)的表。当我这样做时: insert into table (id) VALUES ('00001'); 它将其转换为1。我不介意这种行为,但我想知道这是否会在mysql的未来版本中发生变化。是否有文档或原因说明此操作的原因?这是因为列上有ZEROFILL标志。如果设置了该标志,它会将零作为填充添加到数字中,以便它们满足数字的总“宽度”。因此,如果您有一个INT(3),并且INSERT1,您将得到001 在您的例子中,可能有一个INT(1),因此它只是截断前导零,因

我有一个列id为INT(11)的表。当我这样做时:

insert into table (id) VALUES ('00001');

它将其转换为1。我不介意这种行为,但我想知道这是否会在mysql的未来版本中发生变化。是否有文档或原因说明此操作的原因?

这是因为列上有
ZEROFILL
标志。如果设置了该标志,它会将零作为填充添加到数字中,以便它们满足数字的总“宽度”。因此,如果您有一个
INT(3)
,并且
INSERT
1
,您将得到
001

在您的例子中,可能有一个
INT(1)
,因此它只是截断前导零,因为它们不影响数字的值,只影响数字的显示


id列的数据类型是什么?您可以设置INT数据类型的固定长度的
非单零填充
,如果您想按原样存储值,请将id的数据类型设置为varchar2,它必须是整数或小数点。我想这会有帮助:嗯,数字
00001
1
相同。啊,好的。我的整数不是零填充的,只是想知道它为什么会工作。这似乎是因为零填充是它工作的原因(即使我没有使用它)