MySQL 8.4 Release Notes
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.99
到 999.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列的范围可以由该列的精度或比例限制。将该列分配一个值,该值超过指定比例的小数点位数时,会被转换到指定比例(操作系统特定,但通常是截断到允许的数字位数)。