„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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?

Veröffentlicht am 08.11.2024
Durchsuche:704

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 zu 2147483647 keine Kürzung, sondern ein Überlauf auf die maximal zulässige Ganzzahl für den angegebenen Datentyp.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3