sql >> Base de Datos >  >> RDS >> Mysql

¿Por qué esta consulta sql no devuelve ningún resultado comparando números de punto flotante?

Por lo general, no es una buena idea comparar números de punto flotante con = operador igual.

Para su aplicación, debe considerar qué tan cerca desea que esté la respuesta.

1 grado es aproximadamente 112 km y 0,00001 grados es aproximadamente 1,1 metros (en el ecuador). ¿Realmente desea que su aplicación diga "no es igual" si dos puntos difieren en 0,00000001 grados =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

Esto devolverá puntos donde la longitud está dentro de @epsilon grados del valor deseado. Debe elegir un valor para epsilon que sea apropiado para su aplicación.