簡體   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