更新MySQL表时丢失小数精度

时间:2014-08-12 18:47:04

标签: mysql sql save decimal

我的数据库BuyCommission和SellCommission中有两列,都定义为DECIMAL。但是,当我的程序执行以下操作时:

UPDATE lots 
SET BidValue = '13', Buyer ='2',LotSold = 'S', SellCommission = '1.30', 
    BuyCommission = '1.30'  
WHERE AuctionID = '1' AND LotNumber = '28'

列中显示的值为1,没有保存小数部分。我在将列定义为DECIMAL时使用了正确的类型吗?

2 个答案:

答案 0 :(得分:2)

指定DECIMAL数据类型时,可以指定总位数(精度)和小数点后的位数( scale ) ),形式:

DECIMAL(precision, scale)

如果您没有指定比例,则默认为0,因此它只是一个整数。如果您希望能够存储包含2位小数的10位数字,请将该列声明为

DECIMAL(10,2)

请参阅Fixed Point Types

的MySQL文档

答案 1 :(得分:0)

如果您的字段是小数,则无需在集合中使用单引号:...., SellCommission = 1.3,...。使用单引号,您有一个隐含转换为十进制的字符串值('1.3')(取决于区域设置,例如小数分隔符是逗号,它可以转换为1)。