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_x
和coords_y
都是包含[1,100]范围内值的TINYINT字段。通常MySQL并不关心数字是否被引用..但显然它确实在这种情况下。问题是:为什么?
答案 0 :(得分:4)
我在MySql的iners上有点生疏,但字符串上的<=
转到词典排序而不是数字,即'150' < '17'
。
答案 1 :(得分:2)
从字符串到浮点数的隐式转换可能导致不准确的结果。请参阅:Type Conversion in Expression Evaluation