我有一个名为sellerparams
的表,其中有许多列,其中一个列名为probabilityinc
。此列的类型为float
。
我不明白为什么第二个查询没有像我期望的那样工作。
第一次查询和结果
mysql> select id,probabilityinc from temp.sellerparams;
+----+----------------+
| id | probabilityinc |
+----+----------------+
| 1 | 0.3 |
| 2 | 0.3 |
| 3 | 0.3 |
| 4 | 0.4 |
+----+----------------+
4 rows in set (0.01 sec)
第二个查询和结果(意外?)
mysql> select id from temp.sellerparams where probabilityinc=0.4;
Empty set (0.00 sec)
如您所见,有一行
probabilityinc=0.4
。为什么第二个select返回空?这与浮点数的内部表示有关吗?如果是,如何根据float类型的列进行选择?谢谢您。
最佳答案
您应该将列类型更改为numeric
。float
在设计上是不准确的。而像0.4这样的数字可能略有不同。这就是为什么如果数字存储为0.4
例如,您可以使用0.39999999
。
见the doc