为什么此SQL查询中的单引号会影响计算?

时间:2011-01-28 22:38:06

标签: mysql numbers quotes

SELECT COUNT(*) FROM planets
WHERE ROUND(SQRT(POWER(('71' - coords_x), 2) +
                 POWER(('97' - coords_y), 2))) <= 17

==&GT; 51

SELECT COUNT(*) FROM planets
WHERE ROUND(SQRT(POWER((71 - coords_x), 2) +
                 POWER((97 - coords_y), 2))) <= 17

==&GT; 22

coords_xcoords_y都是包含[1,100]范围内值的TINYINT字段。通常MySQL并不关心数字是否被引用..但显然它确实在这种情况下。问题是:为什么?

2 个答案:

答案 0 :(得分:4)

我在MySql的iners上有点生疏,但字符串上的<=转到词典排序而不是数字,即'150' < '17'

答案 1 :(得分:2)

从字符串到浮点数的隐式转换可能导致不准确的结果。请参阅:Type Conversion in Expression Evaluation