php - SQL 字段类型字段不显示

标签 php mysql sql

enter image description here我有一个 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/

相关文章:

javascript - 如何打印当前用户的地址

php - 告诉 Composer 使用哪个 PHP 版本

sql - 在 SQL 表中查找值

sql - 如何在ORACLE中创建函数来计算列中的值?

c# - 参数化sql查询问题

php - PDO 语句的参数编号无效

php - Laravel 计划 :run command is not working

php - 自定义时间戳格式

mysql:在一个语句中选择和求和

mysql - 结合 SUM 和 WHERE - 没有得到我期望的结果