繁体   English   中英

如何更新MySQL column = column-number

[英]How to update MySQL column = column-number

我有这个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。

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需要更多的存储空间。

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

我认为这源于PHP内部表示数字的方式。 据我所知,PHP将数字存储为浮点十进制数,这可能会生成奇怪的输出,例如您的输出。

我建议阅读以下StackOverflow文章:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM