場所の緯度と経度の表があります。データベース内の値と同じ値が検索される場合に到達するまで、BETWEEN句を正常に使用していました。これらの場合、結果は返されません。次に例を示します。
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;
戻り値:
"latitude" "longitude"
"40.736561" "-74.033882"
"40.735619" "-74.030861"
BETWEEN CLAUSEを使用する場合(これを試したことがあることに注意してください):
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)
結果は0です。ああ、さらに、各値に0.000001を加算および/または減算すると、例。"BETWEEN(40.735619-0.00001)"など。これを行うと、2つの結果が返されます。
わかりました。>=と<=を使用しますが、ドキュメントで非常に明確な場合に、BETWEENが>と<のように動作する理由がわかりません。
exprがmin以上で、exprがmax以下の場合、BETWEENは1を返します。