>>-expression----+------+---------------------------------------> '-NOT--' >----BETWEEN--expression--AND--expression----------------------><
BETWEEN 述部は、ある値を値の範囲と比較します。
次の BETWEEN 述部は、
value1 BETWEEN value2 AND value3
次の探索条件と同等です。
value1 >= value2 AND value1 <= value3
次の BETWEEN 述部は、
value1 NOT BETWEEN value2 AND value3
次の探索条件と同等です。
NOT(value1 BETWEEN value2 AND value3); that is, value1 < value2 OR value1 > value3.
BETWEEN 述部の式の値ごとにコード・ページが異なる場合があります。 この場合、オペランドは、 上記の同等な探索条件が指定された場合と同じようにして変換されます。
第 1 オペランド (expression) に、 可変の関数または外部処理を伴う関数を含めることはできません (SQLSTATE 426804)。
日付 / 時刻値と日付 / 時刻値のストリング表記が混在している場合、 すべての値は日付 / 時刻オペランドのデータ・タイプに変換されます。
例:
例 1
EMPLOYEE.SALARY BETWEEN 20000 AND 40000
結果は $20,000.00 と $40,000.00 の間のすべての給与となります。
例 2
SALARY NOT BETWEEN 20000 + :HV1 AND 40000
:HV1 が 5000 であるとすると、 結果は $25,000.00 より低いか $40,000.00 より高いすべての給与となります。
例 3
次の条件がある場合に、
式 | タイプ | コード・ページ |
---|---|---|
HV_1 | ホスト変数 | 437 |
HV_2 | ホスト変数 | 437 |
Col_1 | 列 | 850 |
ここで、以下の述部を評価すると、
:HV_1 BETWEEN :HV_2 AND COL_1
次のように解釈されます。
:HV_1 >= :HV_2 AND :HV_1 <= COL_1
:HV_1 の最初のオカレンスは、 やはりアプリケーションのコード・ページのままである :HV_2 と比較されるため、 アプリケーションのコード・ページのままになります。 :HV_1 の 2 番目のオカレンスは、列値と比較されるため、 データベースのコード・ページに変換されます。