将bigint长度设置为无穷大

时间:2013-11-22 06:11:35

标签: mysql

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

Column  Type    Collation   Attributes  Null    Default Extra   Action
1        id    bigint(255)      No      None    AUTO_INCREMENT

3 个答案:

答案 0 :(得分:2)

你做不到。所有*INT字段都具有固定长度,该长度与各种编程语言(特别是C)中的整数大小直接相关。即使DECIMAL具有最大尺寸。如果您需要比它提供的更大,请使用*TEXT字段之一将值保存为字符串,但请注意,即使这些字段有限制。

答案 1 :(得分:1)

要获得最大值,请查看documentation

BIGINT SIGNED - 9223372036854775807
BIGINT UNSIGNED - 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)

答案 2 :(得分:0)

我认为在DBMS中不允许这样做,但是像MSDE 2000这样的某些DBMS可以接受无限浮点值。但如果你保存这个值,这是一个致命的错误。

我的意思是确保您的应用程序需要此类数据而不会出现错误。 ?

BIGINT range is:
-9223372036854775808 to 9223372036854775807 normal. 0 to 18446744073709551615 UNSIGNED*. 
The maximum number of digits may be specified in parenthesis

如果您查询此无限的OR NaN数据,您的数据库可能会损坏或抛出致命错误。 这就是为什么如果您不知道存储的数据,建议在查询之前更好地使用异常处理。