Maison > base de données > tutoriel mysql > le corps du texte

Comment MySQL gère-t-il les entiers longs dans des colonnes plus courtes : débordement ou troncature ?

DDD
Libérer: 2024-10-27 20:08:02
original
651 Les gens l'ont consulté

How Does MySQL Handle Long Integers in Shorter Columns: Overflow or Truncation?

Transformation d'un entier long dans une colonne plus courte : mécanisme et formule

Lors de l'insertion d'un entier long dans une colonne d'entiers plus courte, MySQL tronque généralement la valeur pour s'adapter à la longueur spécifiée. Cependant, dans certains cas, le comportement peut différer, entraînant une transformation inattendue.

Considérons une colonne entière de 10 chiffres some_number. Si une valeur dépassant la plage entière maximale (2147483647) est insérée dans cette colonne, au lieu d'être tronquée, MySQL définira la valeur sur 2147483647, l'entier maximum autorisé pour ce type de données.

Le mécanisme derrière Transformation

La transformation se produit en raison d'un débordement d'entier. Lorsque l'entier long dépasse la plage disponible, MySQL l'interprète automatiquement comme un entier négatif et stocke la représentation en complément à deux. Cette valeur négative, une fois reconvertie en un entier non signé, donne 2147483647.

Formule de transformation

La valeur résultante peut être calculée à l'aide de la formule suivante :

Resulting Integer = (Original Integer & 0x7FFFFFFF) + 1
Copier après la connexion

Pour l'exemple donné, avec un entier original de 715988985123857 :

Resulting Integer = (715988985123857 & 0x7FFFFFFF) + 1
Resulting Integer = (2147483647) + 1
Resulting Integer = 2147483647
Copier après la connexion

Par conséquent, la transformation de 715988985123857 en 2147483647 n'est pas une troncature mais plutôt un débordement vers l'entier maximum autorisé pour le type de données spécifié.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!