我正在尝试在MySQL中进行简单的更新查询,但它不起作用:
UPDATE dimensions
SET is_active = 1
WHERE eco_tax = 19.2;
eco_tax是一个FLOAT类型的列,似乎这就是问题,因为当我尝试使用INT列进行更新时,它可以工作。
那么我在MySQL中使用where语法在列中使用浮点数该怎么做?
答案 0 :(得分:4)
当我想在数据库中执行WHERE
时,我总是遇到问题,而且很可能是浮点数学问题。我知道双打同样的方式,但由于一些奇怪的原因,它总是使用双打。因此,我的建议是将数据类型更改为double。
答案 1 :(得分:1)
使用double
代替float
。似乎有一个mySql的错误。有关详细信息,请参阅以下链接。
答案 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)
(当然选择您的比例和精度)并且......不再有问题!