0

我如何在混合十进制值和科学计数值上应用 mysql MIN()。我需要在使用 MIN() 的 mysql 查询中使用纬度经度方程来获得最小距离。如果距离是十进制的,它就可以工作。但它不能正常工作,如果一些距离太小,如“5.89872212195226e-05”

问题是 MIN(4,5.89872212195226e-05) 在 mysql 查询中将始终返回“4”。

这是查询的一部分

 MIN (
         (acos(sin((".$searchLat."*pi()/180)) * 
         sin((b_loc.locLatitude*pi()/180))+cos((".$searchLat."*pi()/180)) * 
         cos((b_loc.locLatitude*pi()/180))
         * cos(((".$searchlng."- b_loc.locLongitude)*pi()/180))))*180/pi())*60*1.1515
        ) as mindistance

有什么解决办法吗?谢谢你

4

1 回答 1

1

转换为十进制应该有帮助:-

mysql> select cast("5.89872212195226e-05" as decimal(65,30));
+-------------------------------------------------- -+
| 演员(“5.89872212195226e-05”为十进制(65,30))|
+-------------------------------------------------- -+
| 0.000058987221219522600000000000 |
+-------------------------------------------------- -+

比较示例:-

mysql> 最少选择(4, cast("5.89872212195226e-05" as decimal(65,30)));
+-------------------------------------------------- ------------+
| 最少(4,演员(“5.89872212195226e-05”为十进制(65,30)))|
+-------------------------------------------------- ------------+
| 0.000058987221219522600000000000 |
+-------------------------------------------------- ------------+

示例用法:-

MIN(cast( ...  as decimal(65,30)))
于 2011-12-02T16:21:36.713 回答