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

How to check if it's safe to reduce precision of a DECIMAL type in MySQL?

我有一个 MySQL table 列 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 描述的方法是合理的,只要在您 运行 查询和重新定义字段之间数据不能更改。如果有可能在中途更改数据,则需要做更多工作。

可能的方法: