Comment comparer la notation scientifique et des nombres décimaux dans une base MySQL MIN () fonction d'agrégation?

StackOverflow https://stackoverflow.com/questions/8356104

Question

Comment puis-je appliquer MySQL MIN () sur la valeur décimale mixte et les valeurs de notation scientifique. Je dois obtenir la distance minimale en utilisant l'équation latitude longitude dans une requête MySQL avec MIN (). Il travaille si la distance est décimale. Mais il ne fonctionne pas correctement, si une certaine distance sont trop petites comme « 5.89872212195226e-05 »

Le problème est MIN (4,5.89872212195226e-05) dans une requête MySQL retournera toujours '4'.

Voici la partie de la requête

 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

Toute solution? Merci

Était-ce utile?

La solution

Cast en décimal devrait aider: -

mysql> select cast( "5.89872212195226e-05"  as decimal(65,30));
+--------------------------------------------------+
| cast( "5.89872212195226e-05"  as decimal(65,30)) |
+--------------------------------------------------+
|                 0.000058987221219522600000000000 |
+--------------------------------------------------+

Exemple de comparaison: -

mysql> select least( 4, cast("5.89872212195226e-05" as decimal(65,30)) );
+------------------------------------------------------------+
| least( 4, cast("5.89872212195226e-05" as decimal(65,30)) ) |
+------------------------------------------------------------+
|                           0.000058987221219522600000000000 |
+------------------------------------------------------------+

Exemple d'utilisation: -

MIN(cast( ...  as decimal(65,30)))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top