我有一个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描述的方法就是合理的。如果数据有可能在过程中更改,则需要执行更多操作。
一种可能的方法: