如何将 mysql MIN() 应用于混合十进制值和科学记数法值。我需要在 mysql 查询中使用 MIN() 使用纬度经度方程获得最小距离。如果距离是小数,则有效。但如果某些距离太小,例如“5.89872212195226e-05”,则它无法正常工作
问题是 mysql 查询中的 MIN(4,5.89872212195226e-05) 将始终返回“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
有什么解决办法吗?谢谢您
最佳答案
转换为十进制应该有帮助:-
mysql> select cast( "5.89872212195226e-05" as decimal(65,30)); +--------------------------------------------------+ | cast( "5.89872212195226e-05" as decimal(65,30)) | +--------------------------------------------------+ | 0.000058987221219522600000000000 | +--------------------------------------------------+
Example of comparison :-
mysql> select least( 4, cast("5.89872212195226e-05" as decimal(65,30)) ); +------------------------------------------------------------+ | least( 4, cast("5.89872212195226e-05" as decimal(65,30)) ) | +------------------------------------------------------------+ | 0.000058987221219522600000000000 | +------------------------------------------------------------+
Example usage :-
MIN(cast( ... as decimal(65,30)))
关于mysql - 如何在mysql MIN()聚合函数中比较科学计数法和小数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8356104/