Donnons un exemple pour int(10), l'un avec le mot clé zerofill, l'autre non, la table aime cela :
create table tb_test_int_type(
int_10 int(10),
int_10_with_zf int(10) zerofill,
unit int unsigned
);
Insérons des données :
insert into tb_test_int_type(int_10, int_10_with_zf, unit)
values (123456, 123456,3147483647), (123456, 4294967291,3147483647)
;
Puis
select * from tb_test_int_type;
# int_10, int_10_with_zf, unit
'123456', '0000123456', '3147483647'
'123456', '4294967291', '3147483647'
On peut voir que
-
avec mot-clé zerofill
, les chiffres inférieurs à 10 rempliront 0, mais sans zerofill
ça ne le fera pas
-
Ensuite, avec le mot-clé zerofill
int_10_with_zf devient un type d'int non signé, si vous insérez un moins vous obtiendrez une erreur. Out of range value for column.....
. Mais vous pouvez insérer des moins dans int_10. De même, si vous insérez 4294967291 dans int_10, vous obtiendrez une erreur. Out of range value for column.....
Conclusion :
-
int(X) sans mot-clé zerofill
est égal à int range -2147483648~2147483647
-
int(X) avec le mot clé zerofill
le champ est égal à un int non signé de 0~4294967295, si la longueur de num est inférieure à X, il remplira 0 à gauche.