Hola.
En
Firebird cree e hice estas pruebas sobre la tabla LUGARES con tres campos
NOMBRE,
LATITUD y
LONGITUD (El primero
VARCHAR(20) y los dos restantes
DOUBLE PRECISION).
Valores:
Código:
NOMBRE LATITUD LONGITUD OPERACION
A 38,353619 -2,45806 (-0.6)
B 38,953619 -1,85806 ( = )
C 38,553619 -1,25806 (+0.6)
Y tanto con la función
ABS, o mediante
BETWEEN obtengo los registros, pero las comparaciónes no pueden ser echas como mencioné en el mensaje anterior debido a los decimales.
En el caso de
Firebird 2.5 y con
DOUBLE PRECISION tuve que comparar con un mínimo de:
Código SQL
[-]
...
WHERE LATITUD - 38.953619 BETWEEN -0.60000000000001 AND 0.60000000000001
AND LONGITUD + 1.85806 BETWEEN -0.60000000000001 AND 0.60000000000001
O
Código SQL
[-]
...
WHERE ABS(LATITUD - 38.953619) <= 0.60000000000001
AND ABS(LONGITUD + 1.85806 ) <= 0.60000000000001
Para que mostrara la totalidad de registros que deberían ser incluidos.
Saludos.