小坑记录一下
mysql 5~8貌似都是这样
拟表
create table user(
id int primary key,
bal decimal(20,8)
)
执行sql:update user set bal=bal+‘0.1234567’ where id=1
实际测试此操作在某些时候计算小数会出现精度丢失问题,即1+1不等于2,这个操作一直以为是 str->decimal ->> decimal+decimal,但现在看来实际是str->double/float -> decimal ->> decimal+decimal
处理方法
update user set bal=bal+CAST(‘0.1234567’ AS DECIMAL(20,8)) where id=1