Mysql
 sql >> Database >  >> RDS >> Mysql

Perché questa query sql non restituisce alcun risultato confrontando i numeri in virgola mobile?

In genere non è una buona idea confrontare i numeri in virgola mobile con = è uguale all'operatore.

Per la tua domanda, devi considerare quanto vuoi che sia vicina la risposta.

1 grado è di circa 112 km e 0,00001 gradi è di circa 1,1 metri (all'equatore). Vuoi davvero che la tua applicazione dica "non uguale" se due punti sono diversi di 0,00000001 gradi =1 mm?

set @EPSLION = 0.00001  /* 1.1 metres at equator */

SELECT * FROM location_forslag 
WHERE `lngitude` >= 13.8461208 [email protected] 
AND `lngitude` <= 13.8461208 + @EPSILON

Questo restituirà punti in cui lngitude è all'interno di @epsilon gradi del valore desiderato. Dovresti scegliere un valore per epsilon che sia appropriato per la tua applicazione.