文档首页
MySQL 8.4 参考手册
相关文档 下载本手册

MySQL 8.4 参考手册  /  ...  /  固定点类型(精确值) - DECIMAL、NUMERIC

13.1.3 固定点类型(精确值) - DECIMAL、NUMERIC

DECIMALNUMERIC 类型存储精确的数值数据。当需要保留精确精度时(例如,用于货币数据)使用这些类型。在 MySQL 中,NUMERIC 被实现为 DECIMAL,因此以下关于 DECIMAL 的说明同样适用于 NUMERIC

MySQL 以二进制格式存储 DECIMAL 值。请参阅 第 14.24 节,“精度数学”

DECIMAL 列声明中,可以(通常也是)指定精度和小数位数。例如

salary DECIMAL(5,2)

在此示例中,5 是精度,2 是小数位数。精度表示为值存储的有效数字数量,小数位数表示可以在小数点后存储的数字数量。

标准 SQL 要求 DECIMAL(5,2) 能够存储任何具有五位数字和两位小数的值,因此可以在 salary 列中存储的值范围从 -999.99999.99

在标准 SQL 中,语法 DECIMAL(M) 等效于 DECIMAL(M,0)。类似地,语法 DECIMAL 等效于 DECIMAL(M,0),其中实现允许决定 M 的值。MySQL 支持这两种 DECIMAL 语法变体形式。M 的默认值为 10。

如果小数位数为 0,则 DECIMAL 值不包含小数点或小数部分。

DECIMAL 的最大位数为 65,但给定 DECIMAL 列的实际范围可能受给定列的精度或小数位数限制。当将具有比指定小数位数允许的更多小数点后数字的值分配给此类列时,该值将转换为该小数位数。(精确行为是特定于操作系统的,但通常效果是截断到允许的数字位数。)