」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > MySQL 如何處理較短列中的長整數:溢位或截斷?

MySQL 如何處理較短列中的長整數:溢位或截斷?

發佈於2024-11-08
瀏覽:141

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

較短列的長整數轉換:機制與公式

將長整數插入較短整數列時,MySQL 通常會截斷該值以適合指定的長度。但是,在某些情況下,行為可能會有所不同,從而導致意外的轉換。

考慮一個 10 位長整數列 some_number。如果將超過最大整數範圍 (2147483647) 的值插入到此列中,MySQL 會將該值設為 2147483647,即該資料類型允許的最大整數,而不是截斷。

背後的機制轉換

由於整數溢位而發生轉換。當長整數超出可用範圍時,MySQL自動將其解釋為負整數並儲存二進位補碼表示形式。此負值在轉換回無符號整數時,結果為 2147483647。

轉換公式

結果值可以使用下列公式計算:

Resulting Integer = (Original Integer & 0x7FFFFFFF)   1

對於給定的範例,原始整數為715988985123857:

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

因此,從 715988985123857 到 2147483647 的轉換不是截斷,而是溢出到指定資料類型允許的最大整數。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3