Mysql decimal:floor而不是round

时间:2013-02-18 12:25:21

标签: mysql decimal

在我的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中是否有任何设置, floor 这些值而不是舍入?

1 个答案:

答案 0 :(得分:8)

来自doc

  

如果为这样的列指定了小数点后面的位数超过指定比例允许的值,则该值将转换为该比例。 (精确的行为是特定于操作系统的,但通常效果是截断为允许的位数。

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

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

SQLFiddle demo