Home > Database > Mysql Tutorial > Why Does a Large Integer Value Transform into 2147483647 When Inserted into a MySQL INT Column?

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

Mary-Kate Olsen
Release: 2024-11-01 09:57:02
Original
863 people have browsed it

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

Understanding Integer Truncation Discrepancy

Consider a situation where you have an integer column with a length of 10, as follows:

<code class="sql">`some_number` int(10) unsigned NOT NULL</code>
Copy after login

When inserting a value larger than the column's allowed range:

<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>
Copy after login

You might expect truncation to occur, resulting in a shorter value. However, surprisingly, the value in the table transforms into 2147483647.

Mechanism Behind the Transformation

According to MySQL documentation, integer overflow for types int and integer will result in the maximum allowed number, which in this case is 2147483647. This behavior is not truncation but rather a modulo operation, which takes the remainder of the original value divided by the maximum allowed number.

Formula for Calculation

To calculate the result of integer overflow, use the following formula:

result = original_value % maximum_allowed_value
Copy after login

In this case:

result = 715988985123857 % 2147483647 = 2147483647
Copy after login

Therefore, the large value of 715988985123857 becomes 2147483647 in the database due to integer overflow and the modulo operation.

The above is the detailed content of Why Does a Large Integer Value Transform into 2147483647 When Inserted into a MySQL INT Column?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template