【发布时间】:2010-09-08 11:21:51
【问题描述】:
如果一行中的价格是38.03,那么以下搜索限制应该都返回包含结果的行。
WHERE price >= '38.02' AND price <= '38.03'(有效)
WHERE price >= '20' AND price <= '100'(这行得通)
WHERE price >= '38.03' AND price <= '38.03'(这不起作用)
WHERE price >= '38.03' AND price <= '100'(这不起作用)
WHERE price >= '38.03'(这不起作用)
WHERE price <= '38.03'(这工作)
价格以浮点数形式存储在数据库中。
所以基本上,<= 正在工作,而 >= 没有。这有什么原因吗?
【问题讨论】:
-
为什么需要用单引号将值括起来?
-
这不是经典浮点比较问题的变体吗?...我忘记名字了...
-
现在可能为时已晚,但价格(和金钱)应始终存储为 DECIMAL 类型,永远不要浮动。 dev.mysql.com/doc/refman/5.0/en/numeric-types.html
-
@Pekka웃 据我所知,这只是“浮点问题”,可能在某个地方出现了“精度”这个词。