mysql精度只有在小数点时才有

问题描述 投票:0回答:1

如何在数据库中以2位小数的精度存储小数值,只有当数字是十进制且有两个以上的小数位时,才可以这样做。

10.00 应存 10

10.0 应存储 10

10 应存 10

10.1 应存储 10.1

10.12 应存储 10.12

10.123 应存 10.12

10.1234 应存 10.12

我已经试过这些了,但都没有效果

FLOAT(20,2)
DOUBLE(20,2)
DECIMAL(20,2)

所有这些都是将简单的 10 变成 10.00

我想设置这个列类型不想在查询中使用。

mysql sql decimal precision
1个回答
0
投票

你混淆了东西的存储方式和呈现方式。 在所有的情况下,你都希望将值存储为 decimal(20, 2)因为你似乎只关心2位数的精度。

当你输出的时候,那么你要把它转换成一个字符串。 如果逗号在较大的数字中是可以接受的,那么类似于:

select (case when col = floor(col) then format(col, 0)
             when col*10 = floor(col * 10) then format(col, 1)
             else format(col, 2)
        end) as col_as_string
© www.soinside.com 2019 - 2024. All rights reserved.