如何更新MySQL column = column-number

时间:2013-11-06 09:37:34

标签: php sql

我有这个mysql列:

points_on | points_off
    0          1.36

这个SQL命令:

UPDATE table SET points_off = points_off-{$cash}, points_on = points_on+{$cash} WHERE ...

$ cash =“1.36”

如果我运行它,表更新错误如下:

points_on | points_off
   1.36      0.0000000143051 

如何正确更新?

我需要将 $ cash 号码从points_off移至points_on。

3 个答案:

答案 0 :(得分:3)

MySQL字段类型是float还是double

根据http://dev.mysql.com/doc/refman/5.0/en/problems-with-float.html,问题是float值近似存储。

您应该使用decimal,定义为decimal(M,D),其中M是数字中的最大位数(例如,对于0.00到9.99,M = 3),并且D是该点之后的位数(例如,对于0.00到9.99,D = 2)。

我执行了您尝试的相同操作,遇到了同样的问题,并使用decimal进行了修复。

请注意,decimal字段比float需要更多的存储空间。

答案 1 :(得分:0)

declare @cash float

set @cash=1.36
update  [dbo].[stkkk] set [pts_on]=[pts_on]+@cash

update  [dbo].[stkkk] set [pts_off]=[pts_off]-@cash

答案 2 :(得分:0)

我认为这源于PHP内部代表数字的方式。据我所知,PHP将数字存储为浮点小数,这可能会产生奇怪的输出,例如你的。

我建议阅读以下StackOverflow文章:

不确定它是否可以100%工作,但您可能想尝试实现一些代码,以确保您的数学运算精确到两位小数,而不是让PHP决定。参考文章可能会有所帮助。