Ho una tabella con latitudini e longitudini di posizioni. Stavo usando con successo la clausola BETWEEN finché non ho raggiunto casi in cui i valori cercati erano identici a quelli nel database. In questi casi non sta restituendo risultati. Ecco un esempio, dove, come:MySQL - TRA l'operatore con FLOAT (10,6) funziona come> e <, invece di> = e <=
SELECT
`Location`.`latitude`,
`Location`.`longitude`
FROM
`locations` AS `Location`
WHERE `latitude` >= 40.735619
AND `latitude` <= 40.736561
AND `longitude` >= -74.033882
AND `longitude` <= -74.030861;
Returns:
"latitude" "longitude"
"40.736561" "-74.033882"
"40.735619" "-74.030861"
Se uso il TRA CLAUSOLA (Si noti che ho anche provato this):
SELECT
`Location`.`latitude`,
`Location`.`longitude`
FROM
`locations` AS `Location`
WHERE `latitude` BETWEEN LEAST(40.735619, 40.736561)
AND GREATEST(40.736561, 40.735619)
AND `longitude` BETWEEN LEAST(- 74.033882, - 74.030861)
AND GREATEST(- 74.030861, - 74.033882)
ottengo 0 risultati. Oh, cosa c'è di più, se aggiungo e/o sottrai 0,000001 a ciascun valore Ex. "BETWEEN (40.735619-0.00001)" ecc. Se faccio questo restituisce i due risultati.
raffinata, userò> = e < = ma quello che non capisco è il motivo per cui TRA agisce come> e < quando nella sua docs abbastanza chiaro:
Se espressione è maggiore di o uguale a min ed expr è inferiore o uguale a max, BETWEEN restituisce 1
Grazie! La modifica del tipo di dati in decimale (10,6) ha funzionato. Quindi immagino che cosa stava succedendo è che stava arrotondando i valori dal db up in modo che fossero al di fuori dell'intervallo e non fossero più uguali? Ciò che mi uccide è perché BETWEEN avrebbe tondo in modo diverso da "> = <=". Vai a capire. – tomwoods