為什麼大整數值插入 MySQL INT 欄位時會變成 2147483647?

Mary-Kate Olsen
發布: 2024-11-01 09:57:02
原創
775 人瀏覽過

Why Does a Large Integer Value Transform into 2147483647 When Inserted into a MySQL INT Column?

了解整數截斷差異

考慮一個長度為10 的整數列的情況,如下:

<code class="sql">`some_number` int(10) unsigned NOT NULL</code>
登入後複製

插入大於列允許範圍的值時:

<code class="php">$some_number = 715988985123857;
$query = "INSERT INTO this_table SET some_number = ?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param('i', $some_number);
$stmt->execute();</code>
登入後複製

您可能會發生截斷,導致數值更短。然而,令人驚訝的是,表中的值轉換為2147483647。

轉換背後的機制

根據MySQL文檔,int和integer類型的整數溢位將導致最大允許數量,在本例中為 2147483647。此行為不是截斷,而是取模運算,即原始值除以最大允許數量的餘數。

計算公式

要計算整數溢位的結果,請使用下列公式:

result = original_value % maximum_allowed_value
登入後複製

在這種情況下:

result = 715988985123857 % 2147483647 = 2147483647
登入後複製

因此,大值由於整數溢位和取模運算,715988985123857在資料庫中變成了2147483647。

以上是為什麼大整數值插入 MySQL INT 欄位時會變成 2147483647?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!