【问题标题】:What is the limit of the field type BIGINT in SQL?SQL中字段类型BIGINT的限制是什么?
【发布时间】:2011-05-23 11:15:29
【问题描述】:

SQL中字段类型BIGINT的限制是什么?

100000235882380 或 100000466411115 是否可以接受? (那是脸书的ID)

【问题讨论】:

  • 我猜为了可移植性,您可能想要使用字符串来代替。在我的例子中,我使用 Base64 对二进制补码值 (BigInteger.toBytes) 进行了编码,并在访问数据库时进行了查找。

标签: sql bigint


【解决方案1】:

【讨论】:

  • 除了 SQL Server 之外,是否还有其他具有 BIGINT 类型的 RDMS?也许是类似的类型,但我认为得出 OP 正在使用 SQL Server 的结论是公平的。
  • MySQL、Postgres...除了 SQL Server 之外,使用 BIGINT 的 RDBMS 的用户比使用 SQL Server 的用户多。
  • 实际上,如果在 ISO SQL 标准中将 bigint 定义为 64 位(我怀疑是),那么您就不需要列出详尽的数据库列表,只需要那些太大脑的数据库 -损坏以符合标准。
  • @Jeff:不幸的是,SQL 标准对整数类型的范围只这么说:“SMALLINT 的精度应小于或等于 INTEGER 的精度,而 BIGINT 的精度应大于大于或等于 INTEGER 的精度。” (精度是整数类型的位数)
  • 这个旧的 DB2 链接已失效; DB2 的数值数据类型现在可以在 ibm.com/docs/en/db2/11.5?topic=dtl-numbers 找到
【解决方案2】:

是的,根据int, bigint, smallint, and tinyint (Transact-SQL)

bigint -2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807)

【讨论】:

    【解决方案3】:

    这取决于 RDBMS。例如,在 MySQL 上,BIGINT 的最大值为 9223372036854775807(有符号)或 18446744073709551615(无符号)。

    请参阅文档的Numeric Types 部分了解完整详情。

    【讨论】:

    • 请注意,这是针对 MySQL 的,其他数据库平台可能有也可能没有相同的限制(唉,OP 没有指定哪个 SQL 数据库)。
    • @Piskvor - 好电话,我的假设太过分了。我会更新我的答案。 :-)
    【解决方案4】:

    没什么好担心的。 BIGINT 可以存储比您拥有的值大得多的值。

    至少高达 9,223,372,036,854,775,807。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-10
      • 1970-01-01
      • 2018-12-09
      • 2018-12-25
      相关资源
      最近更新 更多