MySQL DECIMAL(x,0) 的范围是多少?
DECIMAL 数据类型的范围大于 INTEGER 和 BIGINT 数据类型。我们知道 BIGINT 可以存储 18446744073709551615,而在 DECIMAL 中,您可以存储 DECIMAL(65,0) 其中 x 代表 65 个 9。DECIMAL 以字节存储数字,并且存储要求公式为:DECIMAL(x,0), 即:
StorageRequirementInBytes = (x/9) + remaining;
WHERE remaining = round_up( (x%9) / 2 )
DECIMAL(65,0) 的存储如下 −
99999999999999999999999999999999999999999999999999999999999999999
为了理解我们上面所讨论的,让我们创建一个表。创建表的查询语句如下 −
mysql> create table DecimalDemo
-> (
-> UserId DECIMAL(65,0)
-> );
Query OK, 0 rows affected (0.62 sec)
现在,您可以使用 insert 命令在表中插入一些记录。查询语句如下 −
mysql> insert into DecimalDemo
values(99999999999999999999999999999999999999999999999999999999999999999);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DecimalDemo
values(99999999999999999999999999999999999999999999999999999999999999999.0);
Query OK, 1 row affected (0.28 sec)
使用 select 语句显示表中的所有记录。查询语句如下 −
mysql> select *from DecimalDemo;
阅读更多:MySQL 教程
输出结果
+-------------------------------------------------------------------+
| UserId |
+-------------------------------------------------------------------+
| 99999999999999999999999999999999999999999999999999999999999999999 |
| 99999999999999999999999999999999999999999999999999999999999999999 |
+-------------------------------------------------------------------+
2 rows in set (0.00 sec)
如果您在创建表时尝试提供 66,则会收到以下错误消息−
mysql> create table DecimalDemo1
-> (
-> UserId DECIMAL(66,0)
-> );
ERROR 1426 (42000): Too-big precision 66 specified for 'UserId'. Maximum is 65.
极客教程