提问者:小点点

如何检查在MySQL中降低十进制类型的精度是否安全?


我有一个MySQL表,其中列为decimal类型,例如decimal(20,4)。 我希望将此列的精度降低到decimal(10,2)。 是否有一种简单的方法来验证这不会导致任何数据丢失(即所有现有值都在精度范围内)?


共1个答案

匿名用户

您正在删除“尾数”位置。 新类型将不能存储99999999.99以外的值。

因此,很容易验证是否会丢失数据。 使用以下方法查看是否有任何值超过该限制:

select * from my_table where my_column > 99999999.99

编辑小数位数:

对于末尾的小数点后2位,您可以使用以下方法进行检查:

select * 
from my_table
where round(my_column * 100) <> my_column * 100

或者:

select
from my_table
where right(format(my_column, 4), 2) <> '00'