【发布时间】:2011-05-23 11:15:29
【问题描述】:
SQL中字段类型BIGINT的限制是什么?
100000235882380 或 100000466411115 是否可以接受? (那是脸书的ID)
【问题讨论】:
-
我猜为了可移植性,您可能想要使用字符串来代替。在我的例子中,我使用 Base64 对二进制补码值 (BigInteger.toBytes) 进行了编码,并在访问数据库时进行了查找。
SQL中字段类型BIGINT的限制是什么?
100000235882380 或 100000466411115 是否可以接受? (那是脸书的ID)
【问题讨论】:
查看您正在使用的 RDBMS 的手册。它可能在所有系统中都不相同。
MySQL:
https://dev.mysql.com/doc/refman/5.7/en/integer-types.html
PostgreSQL:
https://www.postgresql.org/docs/10/static/datatype-numeric.html
SQL Server (Transact-SQL):
https://docs.microsoft.com/en-us/sql/t-sql/data-types/int-bigint-smallint-and-tinyint-transact-sql
【讨论】:
是的,根据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)
【讨论】:
这取决于 RDBMS。例如,在 MySQL 上,BIGINT 的最大值为 9223372036854775807(有符号)或 18446744073709551615(无符号)。
请参阅文档的Numeric Types 部分了解完整详情。
【讨论】:
没什么好担心的。 BIGINT 可以存储比您拥有的值大得多的值。
至少高达 9,223,372,036,854,775,807。
【讨论】: