【发布时间】:2011-06-17 13:14:16
【问题描述】:
SELECT COUNT(*) FROM planets
WHERE ROUND(SQRT(POWER(('71' - coords_x), 2) +
POWER(('97' - coords_y), 2))) <= 17
==> 51
SELECT COUNT(*) FROM planets
WHERE ROUND(SQRT(POWER((71 - coords_x), 2) +
POWER((97 - coords_y), 2))) <= 17
==> 22
coords_x 和 coords_y 都是 TINYINT 字段,包含 [1, 100] 范围内的值。通常 MySQL 不关心是否引用了数字.. 但显然在这种情况下它确实如此。问题是:为什么?
【问题讨论】:
-
永远不要依赖隐式类型转换。使用适合数据类型的文字。