1

我正在尝试使用下一句从 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 是一个浮点数,选择仅列出 11、12、17 和 14 字段,但不列出 6.3 和 6.6 中的值

句子有什么问题?

谢谢。

4

2 回答 2

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 以仅使用整数。

于 2012-08-28T23:23:40.043 回答
1

查询没有问题。问题是那float不是精确的类型。改为使用decimal(或将查询更改为类似... WHERE (field_number BETWEEN 6.2999 AND 6.3001) OR (field_number BETWEEN 6.5999 AND 6.6001 OR ()...

于 2012-08-28T23:28:26.750 回答