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!