BETWEEN
条件は、1つの式の値が、他の2つの式によって定義された期間内に存在するかどうかを決定します。
between_condition::=
3つのすべての式は、数式、文字式または日時式である必要があります。SQLでは、expr1
を複数回評価できます。BETWEEN
式がPL/SQLで使用されている場合、expr1
は1回のみ評価されることが保証されます。すべての式が同じデータ型ではない場合、式は共通のデータ型に暗黙的に変換されます。それが不可能な場合は、エラーが戻されます。
次の式の値について考えてみます。
expr1 NOT BETWEEN expr2 AND expr3
この式の値は次の式の値と同じです。
NOT (expr1 BETWEEN expr2 AND expr3)
さらに次の式の値について考えてみます。
expr1 BETWEEN expr2 AND expr3
この式の値は次のブール式の値と同じです。
expr2 <= expr1 AND expr1 <= expr3
expr3
< expr2
の場合、この期間は空です。expr1
がNULL
の場合、結果はNULL
となります。expr1
がNULL
ではない場合、値は通常はFALSE
であり、キーワードNOT
が使用された場合はTRUE
となります。
ブール演算子AND
を使用すると、予期しない結果となる場合があります。特に、式x AND y
では、条件x IS NULL
は式の値を決定するのに十分ではありません。2番目のオペランドも評価する必要があります。2番目のオペランドの値がFALSE
の場合、結果はFALSE
であり、そうではない場合はNULL
となります。AND
の詳細は、「論理条件」を参照してください。