我试图用下一句话从mysql中选择一些值:
SELECT
id, lead_id, form_id, field_number, value
FROM
wp_rg_lead_detail
WHERE
field_number IN (6.3, 6.6, 11, 12, 17, 14)
ORDER BY
lead_id, field_number
字段field_number是一个浮点数,而select只列出了11,12,17和14个字段,但没有列出6.3和6.6中的值
这句话有什么问题?
感谢。
答案 0 :(得分:4)
原因是6.3和6.6实际上并未存储在您的表中。计算机无法完美地代表大多数小数值。当存储的值与6.3或6.6进行比较时,它不匹配,即使看起来应该如此。差异可能在小数点后第9位或第10位,您通常不会看到。
http://dev.mysql.com/doc/refman/5.0/en/problems-with-float.html
如果需要精确比较值,请将它们设为整数或小数。如果小数点右边没有任何数字超过1,则可以将所有值乘以10,以仅使用整数,例如。
答案 1 :(得分:1)
查询没有任何问题。问题是float
不是精确类型。请改为使用decimal
(或将查询更改为... WHERE (field_number BETWEEN 6.2999 AND 6.3001) OR (field_number BETWEEN 6.5999 AND 6.6001 OR ()...
)