【问题标题】:Mysql won't store number larger than 9223372036854775808 with bigintMysql 不会使用 bigint 存储大于 9223372036854775808 的数字
【发布时间】:2014-02-20 23:15:34
【问题描述】:

我希望有一个简单的解决方法。我有一个数据库列,其中存储了一个数字。我知道数字会变得很大,所以我将字段设置为“bigint”。但是它不会存储大于9223372036854775808 的数字。

这是为什么?

【问题讨论】:

  • 如果设置为无符号,则可以存储双倍的金额
  • -1:你应该养成使用参考资料的习惯。
  • 简单修复:使用字符串。而且鉴于 MySQL 奇怪的数字类型,它确实更方便。

标签: mysql sql


【解决方案1】:

引用the manual:

BIGINT[(M)] [未签名] [ZEROFILL]
一个大整数。有符号范围是 -9223372036854775808 到 9223372036854775807。无符号范围是 0 到 18446744073709551615。

【讨论】:

    【解决方案2】:

    您已达到 bigint 的最大大小。由于数字在计算机上的存储方式,这是一个限制。这是您可以用 8 个字节表示的最大大小数。

    如果您需要存储更大的数字,请考虑使用其他方法。您可以使用 varchars,但如果要对其进行数学运算,则需要进行转换。

    【讨论】:

      【解决方案3】:

      我认为您使用的是签名的 BIGINIT:

      签名 bigint 的范围:-9223372036854775808 - 9223372036854775807 无符号 bigint 的范围:0- 18446744073709551615

      使用 ALTER TABLE 修改列:

      ALTER TABLE t1 MODIFY col1 BIGINT UNSIGNED;
      

      【讨论】:

        猜你喜欢
        • 2012-08-27
        • 2010-12-10
        • 2021-11-20
        • 2018-08-05
        • 2012-08-09
        • 1970-01-01
        • 1970-01-01
        • 2011-08-08
        • 1970-01-01
        相关资源
        最近更新 更多