5

在我的 MySQL 数据库中,我有字段 DECIMAL(23,5),所以小数点后有 5 位。现在,当我这样查询时:

UPDATE my_table SET my_decimal_field = 123.123456789 WHERE id = 1

然后我将获取该记录:

SELECT id, my_decimal_field FROM gijhars WHERE id = 1

我得到这个结果:

+------+------------------+
| id   | my_decimal_field |
+------+------------------+
| 5733 |   123.12346      |
+------+------------------+

所以,当然,如果这些值在小数点后超过 6 位,MySQL 会对这些值进行四舍五入。MySQL中是否有任何设置来降低这些值而不是四舍五入?

4

1 回答 1

8

文档

如果为此类列分配的值的小数点后位数超过指定比例允许的位数,则该值将转换为该比例。(确切的行为是特定于操作系统的,但通常效果是截断到允许的位数。

如果您的操作系统不是这种情况,那么您可以在使用truncate更新时处理此问题

UPDATE my_table 
SET my_decimal_field = truncate(123.123456789, 5) 
WHERE id = 1

SQLFiddle 演示

于 2013-02-18T12:30:03.753 回答