MySQL DECIMAL(x,0) 的范围是多少?

mysqlmysqli database更新于 2025/8/30 17:48:17

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) 的存储如下 −

9999999999999999999999999999999999999999999999999999999999999999999999999999999999

为了理解我们上面讨论的内容,让我们创建一个表。创建表的查询如下 −

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;

输出

+-------------------------------------------------------------------+
| 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.

相关文章


有用资源