15

MySQL の BETWEEN には、2 つのエンドポイントとエンドポイント間のすべての結果が含まれます

expr が min 以上で expr が max 以下の場合、BETWEEN は 1 を返し、それ以外の場合は 0 を返します。これは、すべての引数が同じタイプの。参照- http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_between

REALLYBETWEENエンドポイントが含まれていないような関数はありますか、それとも使い続けていmin < expr AND expr < maxますか?

4

2 に答える 2

17

次のように自分で書くことができると思います:

where val > start and val < end

間は次のとおりです。

where val >= start and val <= end

betweenインデックスに関しては、開始と終了が定数であると仮定して、最初の 2 つは と同じように正しくインデックスを使用する必要があります。最後のバージョンがそうなるかどうかはわかりません。

val が複雑な式の場合は、次の点を考慮してください。

select *
from (your query here) t
where t.val > start and t.val < end

これはval一度だけ評価する必要があります。他のフォームはそれを2回評価すると思います。

または、次のようにすることもできます。

where val between start and end and val not in (start, end)
于 2013-01-22T15:13:20.617 に答える
1

は関数ではなく式であることに注意してくださいBETWEEN。これは単なるコーディングの便宜であり、まさにその内容を意味します。パフォーマンス上の利点はありません。

エンドポイントを除外するには、自分でコーディングする必要があります。

于 2013-01-22T15:16:28.117 に答える