Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dlaczego to zapytanie sql nie zwraca żadnych wyników porównujących liczby zmiennoprzecinkowe?

Generalnie nie jest dobrym pomysłem porównywanie liczb zmiennoprzecinkowych za pomocą = oznacza operator.

W przypadku swojej aplikacji musisz zastanowić się, jak blisko chcesz uzyskać odpowiedź.

1 stopień to około 112 km, a 0,00001 stopnia to około 1,1 metra (na równiku). Czy naprawdę chcesz, aby Twoja aplikacja mówiła „nie równe”, jeśli dwa punkty różnią się o 0,00000001 stopni =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

Spowoduje to zwrócenie punktów, których długość geograficzna mieści się w zakresie @epsilon stopni żądanej wartości. Powinieneś wybrać wartość dla epsilon, która jest odpowiednia dla twojego zastosowania.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Domyślna wartość TERAZ w dwóch kolumnach MySQL ERROR 1067

  2. MySQL Levenshtein

  3. MySQL:Nieprawidłowe dane GIS dostarczone do funkcji st_geometryfromtext

  4. Jak odwrócić bazę danych w środowisku MySQL Workbench

  5. Zapytania MySQL są szybkie, gdy są uruchamiane bezpośrednio, ale naprawdę wolno, gdy są uruchamiane jako przechowywane proc