Mysql 将bigint长度设置为无穷大

Mysql 将bigint长度设置为无穷大,mysql,Mysql,我试图将数据类型为integer(BIGINT)的数据库表的一个字段的长度设置为无穷大。请告诉我如何将字段长度设置为无限/无限 Column Type Collation Attributes Null Default Extra Action 1 id bigint(255) No None AUTO_INCREMENT 列类型排序规则属性Null默认额外操作 1 id bigint(255)无无自动增量 你不能。所有*IN

我试图将数据类型为integer(BIGINT)的数据库表的一个字段的长度设置为无穷大。请告诉我如何将字段长度设置为无限/无限

Column Type Collation Attributes Null Default Extra Action 1 id bigint(255) No None AUTO_INCREMENT 列类型排序规则属性Null默认额外操作 1 id bigint(255)无无自动增量
你不能。所有
*INT
字段都有一个固定的长度,该长度与各种编程语言(尤其是C语言)中整数的大小直接相关。即使是
DECIMAL
也有一个最大大小。如果您需要大于它提供的值,则使用
*文本中的一个字段将该值作为字符串保存,但请注意,即使这些字段也有限制。

我认为DBMS中不允许使用该值,但某些DBMS(如MSDE 2000)可以接受无限浮点值。但如果保存此值,则是一个致命错误

我的意思是,你确信你的应用程序需要这样的数据,而且没有错误

BIGINT range is:
-9223372036854775808 to 9223372036854775807 normal. 0 to 18446744073709551615 UNSIGNED*. 
The maximum number of digits may be specified in parenthesis
如果查询此无限或NaN数据,数据库可能会损坏或抛出致命错误。
这就是为什么如果您不知道存储的数据,建议在查询之前更好地使用异常处理。

有关最大值,请参阅

BIGINT签名-9223372036854775807
BIGINT未签名-18446744073709551615

mysql> CREATE TABLE Table1(`col1` BIGINT, `col2` BIGINT UNSIGNED); Query OK, 0 rows affected (0.02 sec) mysql> DESC table1; +-------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------------------+------+-----+---------+-------+ | col1 | bigint(20) | YES | | NULL | | | col2 | bigint(20) unsigned | YES | | NULL | | +-------+---------------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> INSERT INTO Table1 VALUES(9223372036854775807, 18446744073709551615); Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM Table1; +---------------------+----------------------+ | col1 | col2 | +---------------------+----------------------+ | 9223372036854775807 | 18446744073709551615 | +---------------------+----------------------+ 1 row in set (0.00 sec) mysql>创建表Table1(`col1`BIGINT,`col2`BIGINT UNSIGNED); 查询正常,0行受影响(0.02秒) mysql>DESC表1; +-------+---------------------+------+-----+---------+-------+ |字段|类型|空|键|默认|额外| +-------+---------------------+------+-----+---------+-------+ |col1 | bigint(20)| YES | | NULL || |col2 | bigint(20)无符号| YES | | NULL || +-------+---------------------+------+-----+---------+-------+ 一组2行(0.00秒) mysql>插入表1值(922337203685477580718446744073709551615); 查询正常,1行受影响(0.00秒) mysql>从表1中选择*; +---------------------+----------------------+ |col1 | col2| +---------------------+----------------------+ | 9223372036854775807 | 18446744073709551615 | +---------------------+----------------------+ 一行一组(0.00秒)
你说的……将字段长度设置为无穷大/无限长是什么意思?@peterm我的意思是将其设置为允许存储的最大值。如果OP想要存储精确的
PI
十进制数字,那么我们对他来说有个坏消息,因为
TEXT
数据类型中的
4Gb
都不够。(我认为如果
BIGINT
还不够,那么就出了问题)数据类型BIGINT的最大长度应该是多少?@user2304394:计算中的数字。这是
BIGINT
的最大长度。在编程方面,64位。我给出了
18446744073709551615
的长度,但不是accepted@user2304394请告诉我你是怎么做到的。您的
BIGINT类型的列是否未签名?@user2304394:这些是最大值,而不是长度。@peterm谢谢您的更新解决了我一直在寻找的问题