文档首页
MySQL 9.0 参考手册
相关文档 下载此手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

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

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

MySQL 以二进制格式存储 DECIMAL 值。请参见 第 14.25 节,“精确数学”

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 列的实际范围可能会受到给定列的精度或标度的限制。当为这样的列分配一个值时,如果小数点后的位数多于指定的标度允许的位数,则该值将转换为该标度。(精确的行为是特定于操作系统的,但通常效果是截断到允许的位数。)