如何在混合十进制值和科学记数法值上应用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
任何解决方案?谢谢
答案 0 :(得分:1)
投射到小数应该有帮助: -
mysql> select cast( "5.89872212195226e-05" as decimal(65,30)); +--------------------------------------------------+ | cast( "5.89872212195226e-05" as decimal(65,30)) | +--------------------------------------------------+ | 0.000058987221219522600000000000 | +--------------------------------------------------+
比较示例: -
mysql> select least( 4, cast("5.89872212195226e-05" as decimal(65,30)) ); +------------------------------------------------------------+ | least( 4, cast("5.89872212195226e-05" as decimal(65,30)) ) | +------------------------------------------------------------+ | 0.000058987221219522600000000000 | +------------------------------------------------------------+
用法示例: -
MIN(cast( ... as decimal(65,30)))