日本語PDF

BETWEEN条件

BETWEEN条件は、1つの式の値が、他の2つの式によって定義された期間内に存在するかどうかを決定します。

between_condition::=

3つのすべての式は、数式、文字式または日時式である必要があります。SQLでは、expr1を複数回評価できます。BETWEEN式がPL/SQLで使用されている場合、expr1は1回のみ評価されることが保証されます。すべての式が同じデータ型ではない場合、式は共通のデータ型に暗黙的に変換されます。それが不可能な場合は、エラーが戻されます。

関連項目:

SQLのデータ型変換の詳細は、暗黙的なデータ変換を参照してください。

次の式の値について考えてみます。

expr1 NOT BETWEEN expr2 AND expr3

この式の値は次の式の値と同じです。

NOT (expr1 BETWEEN expr2 AND expr3)

さらに次の式の値について考えてみます。

expr1 BETWEEN expr2 AND expr3

この式の値は次のブール式の値と同じです。

expr2 <= expr1 AND expr1 <= expr3

expr3 < expr2の場合、この期間は空です。expr1NULLの場合、結果はNULLとなります。expr1NULLではない場合、値は通常はFALSEであり、キーワードNOTが使用された場合はTRUEとなります。

ブール演算子ANDを使用すると、予期しない結果となる場合があります。特に、式x AND yでは、条件x IS NULLは式の値を決定するのに十分ではありません。2番目のオペランドも評価する必要があります。2番目のオペランドの値がFALSEの場合、結果はFALSEであり、そうではない場合はNULLとなります。ANDの詳細は、論理条件を参照してください。

表6-10 BETWEEN条件

条件の種類 操作
[NOT] BETWEEN x AND y

[NOT](expr2expr1以下、AND expr1expr3以下)

SELECT * FROM employees
  WHERE salary
  BETWEEN 2000 AND 3000
  ORDER BY employee_id;