Heim  >  Artikel  >  Datenbank  >  Wie geht MySQL mit langen Ganzzahlen in kürzeren Spalten um: Überlauf oder Kürzung?

Wie geht MySQL mit langen Ganzzahlen in kürzeren Spalten um: Überlauf oder Kürzung?

DDD
DDDOriginal
2024-10-27 20:08:02651Durchsuche

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

Transformation langer Ganzzahlen in kürzeren Spalten: Mechanismus und Formel

Beim Einfügen einer langen Ganzzahl in eine kürzere Ganzzahlspalte schneidet MySQL normalerweise den Wert ab um innerhalb der angegebenen Länge zu passen. In einigen Fällen kann das Verhalten jedoch abweichen, was zu einer unerwarteten Transformation führt.

Stellen Sie sich eine 10-stellige lange Ganzzahlspalte „some_number“ vor. Wenn in diese Spalte ein Wert eingefügt wird, der den maximalen Ganzzahlbereich (2147483647) überschreitet, setzt MySQL den Wert statt auf Kürzung auf 2147483647, die maximal zulässige Ganzzahl für diesen Datentyp.

Der Mechanismus dahinter Transformation

Die Transformation erfolgt aufgrund eines Ganzzahlüberlaufs. Wenn die lange Ganzzahl den verfügbaren Bereich überschreitet, interpretiert MySQL sie automatisch als negative Ganzzahl und speichert die Zweierkomplementdarstellung. Wenn dieser negative Wert wieder in eine vorzeichenlose Ganzzahl umgewandelt wird, ergibt sich 2147483647.

Formel für die Transformation

Der resultierende Wert kann mit der folgenden Formel berechnet werden:

Resulting Integer = (Original Integer & 0x7FFFFFFF) + 1

Für das gegebene Beispiel mit einer ursprünglichen Ganzzahl von 715988985123857:

Resulting Integer = (715988985123857 & 0x7FFFFFFF) + 1
Resulting Integer = (2147483647) + 1
Resulting Integer = 2147483647

Daher ist die Transformation von 715988985123857 in 2147483647 keine Kürzung, sondern eher ein Überlauf auf die maximal zulässige Ganzzahl für der angegebene Datentyp.

Das obige ist der detaillierte Inhalt vonWie geht MySQL mit langen Ganzzahlen in kürzeren Spalten um: Überlauf oder Kürzung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn