在MySQL中使用float类型进行更新

时间:2011-11-30 10:18:33

标签: mysql floating-point

我正在尝试在MySQL中进行简单的更新查询,但它不起作用:

UPDATE dimensions
SET is_active = 1
WHERE eco_tax = 19.2;

eco_tax是一个FLOAT类型的列,似乎这就是问题,因为当我尝试使用INT列进行更新时,它可以工作。

那么我在MySQL中使用where语法在列中使用浮点数该怎么做?

4 个答案:

答案 0 :(得分:4)

当我想在数据库中执行WHERE时,我总是遇到问题,而且很可能是浮点数学问题。我知道双打同样的方式,但由于一些奇怪的原因,它总是使用双打。因此,我的建议是将数据类型更改为double。

答案 1 :(得分:1)

使用double代替float。似乎有一个mySql的错误。有关详细信息,请参阅以下链接。

http://bugs.mysql.com/bug.php?id=14268

答案 2 :(得分:1)

这个问题的根源是某些数字不能完全以浮点表示。您可以尝试类似下面的内容(不幸的是,我无法访问MySQL实例来亲自尝试):

UPDATE dimensions
SET is_active = 1
WHERE ABS(eco_tax - 19.2) < 1E-08;

换句话说,更新两个值之间的差异是否可以忽略不计。

答案 3 :(得分:1)

尝试将列更改为DECIMAL(x,y)。 我遇到了同样的问题,我发现只有在where子句中使用浮动值时才会发生这种情况。我将列类型从FLOAT更改为DECIMAL(5,2)(当然选择您的比例和精度)并且......不再有问题!