sql >> Databáze >  >> RDS >> Mysql

Proč tento dotaz SQL nevrací žádné výsledky porovnávající čísla s plovoucí desetinnou čárkou?

Obecně není dobrý nápad porovnávat čísla s plovoucí desetinnou čárkou s = rovná se operátor.

Pro vaši aplikaci musíte zvážit, jak blízko chcete, aby byla odpověď.

1 stupeň je asi 112 km a 0,00001 stupně je asi 1,1 metru (na rovníku). Opravdu chcete, aby vaše aplikace říkala „není se rovnat“, pokud se dva body liší o 0,00000001 stupně =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

To vrátí body, kde je zeměpisná šířka v @epsilon stupně požadované hodnoty. Měli byste zvolit hodnotu pro epsilon, která je vhodná pro vaši aplikaci.



  1. Vytváření aktivačních událostí auditu na serveru SQL Server

  2. Proč musím používat cizí klíč, když mohu použít WHERE?

  3. Jak zkontrolovat, zda kurzor vrací nějaké záznamy v oracle?

  4. PostgreSQL - dynamická hodnota jako název tabulky