了解 MySQL 中的数字列转换
当插入较短的列时,MySQL 通常会将长整数转换为意外值。 MySQL 不是截断,而是调整存储的值。此行为归因于整数溢出机制。
例如,考虑一个名为 some_number 、长度为 10 的列。当插入超过此长度的数字(例如 715988985123857)时,它会转换为 2147483647。
溢出机制
根据MySQL文档,当计算结果超过数据类型允许的最大值时,就会发生整数溢出。在这种情况下,10 位整数的最大值为 2147483647。
计算结果公式
转换遵循特定公式:
Result = Number % (2^Bits) - 1
其中:
在我们的示例中,Number 为 715988985123857,Bits 为 10,结果为:
2147483647
BigInt 与 Int
为了避免整数溢出,请对较大的整数使用 bigint 数据类型。 BigInt 最多可以存储 2^63-1 的值,防止截断或转换问题。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3