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.
相关文章
有用资源
mysql 参考教程 - 该教程包含有关 mysql 的更多信息:https://www.cainiaomax.com/mysql/

