44 votes

Que signifie INT(5) dans mysql?

J'ai toujours pensé que INT(5) signifie un nombre qui a une taille maximale de 5 chiffres. J'ai essayé d'entrer un énorme nombre à l'intérieur et il a été coupé à 2147483647.

Ce n'est évidemment pas 5 chiffres. Alors, quelle est la limitation de INT(5) ?

48voto

ypercube Points 62714

De MySQL Docs, Attributs de type numérique

MySQL prend en charge une extension pour spécifier facultativement la largeur d'affichage des types de données entiers entre parenthèses après le mot-clé de base pour le type. Par exemple, INT(4) spécifie un INT avec une largeur d'affichage de quatre chiffres. Cette largeur d'affichage facultative peut être utilisée par les applications pour afficher des valeurs entières ayant une largeur inférieure à celle spécifiée pour la colonne en les rembourrant avec des espaces à gauche. (C'est-à-dire, cette largeur est présente dans les métadonnées renvoyées avec les ensembles de résultats. Que cela soit utilisé ou non dépend de l'application.)

31voto

NPE Points 169956

INT fait toujours quatre octets de large. Le 5 est la "largeur d'affichage".

0 votes

Pouvez-vous donner un exemple?

0 votes

Mais comment le serveur l'utilise-t-il? Même si la largeur est de 5, le serveur autorise les entiers ayant plus de 5 chiffres. Est-ce uniquement pour l'utilisation d'applications construites en utilisant des interfaces d'accès à la base de données comme les pilotes ODBC et JDBC?

0 votes

D'accord. La réponse de @ypercube ci-dessous clarifie mon doute.

18voto

Umesh Moghariya Points 764

En MySQL, INT(5) ne signifie pas que les valeurs sont limitées à des valeurs de 5 caractères. Cela signifie seulement que MySQL va essayer de remplir ces valeurs avec des espaces/zéros lors de leur retour.

La plage numérique de n'importe quel INT signé, y compris INT(10), INT(5) ou tout autre INT(n) est la suivante : -2 147 483 648 ... 2 147 483 647, ce qui fait au maximum 10 chiffres.

0 votes

Etonné que ce soit la première fois que j'ai compris le concept de longueur INT, merci beaucoup!

6voto

LeleDumbo Points 5371

http://dev.mysql.com/doc/refman/5.0/fr/numeric-type-overview.html

"M indique la largeur d'affichage maximale pour les types entiers. La largeur d'affichage maximale légale est de 255. La largeur d'affichage n'a aucun rapport avec la plage de valeurs qu'un type peut contenir, comme décrit dans la section 10.2, « Types numériques »"

3voto

dukang214 Points 31

https://alexander.kirk.at/2007/08/24/what-does-size-in-intsize-of-mysql-mean/
M indique la largeur d'affichage maximale des types entiers. Pour les types à virgule flottante et à virgule fixe, M est le nombre total de chiffres pouvant être stockés. Pour les types de chaînes de caractères, M est la longueur maximale. La valeur maximale autorisée de M dépend du type de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X