0

混合10進値と科学的記数法の値にmysqlMIN()を適用するにはどうすればよいですか。MIN()を使用したmysqlクエリで緯度経度の式を使用して最小距離を取得する必要があります。距離が小数の場合は機能しています。ただし、「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

解決策はありますか?ありがとうございました

4

1 に答える 1

1

10進数にキャストすると役立つはずです:-

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)));
+ ------------------------------------------------- ----------- +
| 最小(4、cast( "5.89872212195226e-05" as decimal(65,30)))|
+ ------------------------------------------------- ----------- +
| 0.000058987221219522600000000000 |
+ ------------------------------------------------- ----------- +

使用例:-

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