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



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

您正在删除"尾数"位置。新类型将无法存储超出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'

只要在运行该查询和重新定义字段之间无法更改数据,@theimpaler描述的方法就是合理的。如果数据有可能在过程中更改,则需要执行更多操作。

一种可能的方法:

最新更新