Mysql双值更新问题有些值如1.86,1.36

时间:2018-03-09 07:42:15

标签: mysql

我有一个包含字段名称stock的表(带有unsigned检查的double值)     表结构

id  stock
1   1.86

当我尝试更新某些值(如1.86,1.36)时,会给出此错误

Out of range value for column 'stock' at row 1

这是我的更新查询

Update sample set stock = stock - 1.86;

除此值外的所有其他点值更新 我使用的是Mysql Version 5.6

有什么建议吗?

修改

我试试这个

SELECT a.stock,a.`stock` - 1.36 FROM `sample` a;

结果是

stock  a.`stock` - 1.36
  1.36  -0.00

如果像我这样更改我的查询

SELECT a.stock,(ROUND(a.`stock`,2) - 1.36) FROM `sample` a;

结果是

 stock  (ROUND(a.`stock`,2) - 1.36)
  1.36  0.00

我现在如何管理这个问题。我希望它是一个mysql Bug。

1 个答案:

答案 0 :(得分:1)

使用取消选中 UNSIGNED将列类型更改为 DOUBLE(5,2)

无符号类型可用于仅允许列中的非负数字,或者当您需要更大的列的上限数字范围时。例如,如果INT列为UNSIGNED,则列的范围大小相同,但其端点从-2147483648和2147483647更改为0和4294967295。

希望这会有所帮助。