Je veux juste savoir quel est l'avantage / l'utilisation de définir ZEROFILL
pour INT
DataType dans MySQL
?
`id` INT UNSIGNED ZEROFILL NOT NULL
mysql
types
unsigned-integer
diEcho
la source
la source
zerofill
n'est pas standard. " L'ZEROFILL
attribut est ignoré lorsqu'une colonne est impliquée dans des expressions ou desUNION
requêtes. Si vous stockez des valeurs supérieures à la largeur d'affichage dans une colonne d'entiers qui possède l'ZEROFILL
attribut, vous pouvez rencontrer des problèmes lorsque MySQL génère des tables temporaires pour certaines jointures complexes. Dans ces cas , MySQL suppose que les valeurs de données correspondent à la largeur d'affichage de la colonne. "Réponses:
Lorsque vous sélectionnez une colonne avec un type
ZEROFILL
, la valeur affichée du champ est remplie de zéros jusqu'à la largeur d'affichage spécifiée dans la définition de colonne. Les valeurs plus longues que la largeur d'affichage ne sont pas tronquées. Notez que l'utilisation deZEROFILL
implique égalementUNSIGNED
.L'utilisation d'
ZEROFILL
une largeur d'affichage et n'a aucun effet sur la façon dont les données sont stockées. Cela n'affecte que la façon dont il est affiché.Voici un exemple de SQL qui illustre l'utilisation de
ZEROFILL
:Résultat:
la source
Un exemple pour comprendre où l'utilisation de
ZEROFILL
peut être intéressante:En Allemagne, nous avons des codes postaux à 5 chiffres. Cependant, ces codes peuvent commencer par un zéro, donc
80337
un code postal valide pour munic01067
est un code postal de Berlin.Comme vous le voyez, tout citoyen allemand s'attend à ce que les codes postaux soient affichés sous forme de code à 5 chiffres, ce qui
1067
semble étrange.Pour stocker ces données, vous pouvez utiliser un
VARCHAR(5)
ouINT(5) ZEROFILL
alors que l'entier rempli à zéro présente deux grands avantages:1067
, vous01067
revenez toujoursPeut-être que cet exemple aide à comprendre l'utilisation de
ZEROFILL
.la source
C'est une fonctionnalité pour les personnalités dérangées qui aiment les boîtes carrées.
Vous insérez
mais quand on sélectionne, ça remplit les valeurs
la source
Cela aide à corriger le tri dans le cas où vous auriez besoin de concaténer cet "entier" avec autre chose (un autre nombre ou un autre texte) qui nécessitera alors d'être trié comme un "texte".
par exemple,
si vous devez utiliser les nombres de champ entiers (disons 5) concaténés comme A-005 ou 10/0005
la source
Je sais que je suis en retard à la fête mais je trouve que le zerofill est utile pour les représentations booléennes de TINYINT (1). Null ne signifie pas toujours faux, parfois vous ne le voulez pas. En remplissant à zéro un tinyint, vous convertissez efficacement ces valeurs en INT et supprimez toute confusion que votre application peut avoir lors de l'interaction. Votre application peut ensuite traiter ces valeurs d'une manière similaire au type de données primitif True = Not (0)
la source
666
donc je préférerais garder cette réponse telle quelle;-)
la source
http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
la source
Si vous spécifiez ZEROFILL pour une colonne numérique, MySQL ajoute automatiquement l'attribut UNSIGNED à la colonne.
Les types de données numériques qui autorisent l'attribut UNSIGNED autorisent également SIGNED. Cependant, ces types de données sont signés par défaut, donc l'attribut SIGNED n'a aucun effet.
La description ci-dessus est tirée du site officiel de MYSQL.
la source
ZEROFILL
Cela signifie essentiellement que si la valeur entière 23 est insérée dans une colonne INT d'une largeur de 8, le reste de la position disponible sera automatiquement complété par des zéros.
Par conséquent
devient:
la source