Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Fixed-Point Types (Exact Value) - DECIMAL, NUMERIC

13.1.3 fixed点类型(精确值)- DECIMAL,NUMERIC

DECIMAL 和 NUMERIC 类型存储精准的numeric 数据值。这些类型在重要时保留精准,例如在货币数据中。在 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(<em class="replaceable"><code>M</code></em>)等同于DECIMAL(<em class="replaceable"><code>M</code>,0</code>)。类似地,语法DECIMAL等同于DECIMAL(<em class="replaceable"><code>M</code>,0</code>)

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

DECIMAL的最大数字位数为65,但是实际上某个DECIMAL列的范围可以由该列的精度或比例限制。将该列分配一个值,该值超过指定比例的小数点位数时,会被转换到指定比例(操作系统特定,但通常是截断到允许的数字位数)。