我有一个 MySQL 表,其中一个字段是 variation
,类型是 float
。它的值为 0.2
。但是当我像 WHERE variation = '0.2'
这样查询时,它没有显示结果,而是返回 null。我做错了什么?
SELECT * FROM tbl_products
WHERE frequency BETWEEN '2' AND '3'
AND gain = '2'
AND gain_variation = '0.2'
AND noise = '2'
AND power = '10'
最佳答案
删除数字周围的引号再试一次。
例如 WHERE variation = 0.2
编辑:正如 Peeka 指出的那样,引号在 MySQL 中无关紧要。
您绝对确定 float 的值正好是 0.2 并且没有四舍五入的有效数字吗?您可以尝试使用 BETWEEN 0.19 AND 0.21
并查看是否返回了您之后的行(我知道这不是等效查询,可能会返回不需要的结果,但它会测试该值是否正好是 0.2 或客户端是否四舍五入)。
编辑 2:我敢打赌这是因为 MySQL 存储 float 的方式——取自他们的手册:
Floating-point numbers sometimes cause confusion because they are approximate and not stored as exact values. A floating-point value as written in an SQL statement may not be the same as the value represented internally.
查看此处了解更多信息:http://dev.mysql.com/doc/refman/5.0/en/problems-with-float.html
建议使用范围而不是等式来过滤,所以如果你使用BETWEEN 0.19 AND 0.21
你能得到你想要的结果吗?
关于php - SQL 字段类型字段不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7736207/