BETWEEN演算子

構文

between_expression ::= input_expression BETWEEN low_bound_expression AND
    high_bound_expression
input_expression := concatenate_expression
low_bound_expression := concatenate_expression
high_bound_expression := concatenate_expression

セマンティクス

BETWEEN演算子は、入力式の値が下位式と上位式(境界値を含む)の間に存在するかどうかをチェックします。これは、次と同等です。
low_bound_expression <= input_expression AND input_expression <=
    high_bound_expression
BETWEEN演算子は、内部的に次の処理を実行します。
  1. 2つの値比較操作: 次の条件をチェックします。
    1. 下限式が入力式以下かどうか。
    2. 入力式が上限式以下かどうか。
  2. 論理演算 - 結果に論理演算子ANDが適用されます。

これは基本的に、入力式が境界値の範囲内にあるかどうかを検証します。両方の式がTRUEを返す場合、操作はTRUE値を返します。いずれかの式がFALSEを返す場合、操作はFALSE値を返します。いずれかの式がNULLまたはNULL値につながる場合、演算の結果もNULLになります。いずれかの式が複数の項目を返す場合、比較演算子は複数の項目の順序を処理しないため、エラーが発生します。値比較演算子および論理演算子の詳細は、比較式を参照してください。

様々なデータ型の入力式の比較を理解するには、値比較演算子トピックのセマンティクスを参照してください。

例6-73 チケット番号が特定範囲内である乗客の詳細をフェッチします。

SELECT
fullname,
ticketNo
FROM baggageinfo s
WHERE ticketNo BETWEEN 1762300000000 and 1762350000000

説明:この問合せでは、チケット番号が1762300000000から1762350000000の間の乗客の詳細をbaggageInfo表から取得します。WHERE句でBETWEEN演算子を使用して、必要な範囲内の行を選択して表示します。

出力:
{"fullname":"Lorenzo Phil","ticketNo":1762320369957}
{"fullname":"Elane Lemons","ticketNo":1762324912391}
{"fullname":"Michelle Payne","ticketNo":1762330498104}
{"fullname":"Lucinda Beckman","ticketNo":1762320569757}
{"fullname":"Rosalia Triplett","ticketNo":1762311547917}
{"fullname":"Zulema Martindale","ticketNo":1762340579411}
{"fullname":"Omar Harvey","ticketNo":1762348904343}
{"fullname":"Adam Phillips","ticketNo":1762344493810}
{"fullname":"Mary Watson","ticketNo":1762340683564}
{"fullname":"Gerard Greene","ticketNo":1762341772625}

例6-74 予約コードが一定範囲内にある乗客の詳細および手荷物の経路情報をフェッチします。

SELECT fullname AS FULLNAME,
confNo AS RESERVATION,
s.bagInfo.routing AS ROUTINGINFO 
FROM BaggageInfo s
WHERE confNo BETWEEN 'LE6J4Z' and 'ZG8Z5N'
ORDER BY confNo

説明: 乗客ごとに1つの予約コード(confNo)があります。この問合せでは、予約コードがLE6J4ZおよびZG8Z5Nの範囲内にある手荷物の乗客詳細、予約コードおよび経路詳細を取得します。WHERE句でBETWEEN演算子を使用して、入力文字列の下限値および上限値とconfNo値の文字列比較を実行します。範囲内の行のみが選択され、出力に表示されます。

出力:
{"FULLNAME":"Adam Phillips","RESERVATION":"LE6J4Z","ROUTINGINFO":"MIA/LAX/MEL"}
{"FULLNAME":"Elane Lemons","RESERVATION":"LN0C8R","ROUTINGINFO":"MXP/CDG/SLC/BZN"}
{"FULLNAME":"Gerard Greene","RESERVATION":"MC0E7R","ROUTINGINFO":"SFO/IST/ATH/JTR"}
{"FULLNAME":"Henry Jenkins","RESERVATION":"MZ2S5R","ROUTINGINFO":"SFO/ORD/FRA"}
{"FULLNAME":"Omar Harvey","RESERVATION":"OH2F8U","ROUTINGINFO":"MEL/LAX/MIA"}
{"FULLNAME":"Kendal Biddle","RESERVATION":"PQ1M8N","ROUTINGINFO":"JFK/IST/VIE"}
{"FULLNAME":"Zina Christenson","RESERVATION":"QB1O0J","ROUTINGINFO":"MIA/LAX/MEL"}
{"FULLNAME":"Lorenzo Phil","RESERVATION":"QI3V6Q","ROUTINGINFO":["SFO/IST/ATH/JTR","SFO/IST/ATH/JTR"]}
{"FULLNAME":"Lucinda Beckman","RESERVATION":"QI3V6Q","ROUTINGINFO":"SFO/IST/ATH/JTR"}
{"FULLNAME":"Michelle Payne","RESERVATION":"RL3J4Q","ROUTINGINFO":"SFO/IST/ATH/JTR"}
{"FULLNAME":"Teena Colley","RESERVATION":"TX1P7E","ROUTINGINFO":"MSQ/FRA/HKG"}
{"FULLNAME":"Fallon Clements","RESERVATION":"XT1O7T","ROUTINGINFO":"MXP/CDG/SLC/BZN"}
{"FULLNAME":"Raymond Griffin","RESERVATION":"XT6K7M","ROUTINGINFO":"MSQ/FRA/HKG"}
{"FULLNAME":"Dierdre Amador","RESERVATION":"ZG8Z5N","ROUTINGINFO":"JFK/MAD"}

例6-75 2019年2月15日から2週間以内にMIAから旅行した乗客を検索します。

SELECT fullname,
FROM BaggageInfo bag
WHERE exists bag.bagInfo.flightLegs[$element.fltRouteSrc = "MIA"
AND
$element.flightDate BETWEEN "2019-02-15T00:00:00Z" and "2019-03-02T00:00:00Z"]

説明:この問合せでは、2019年2月15日から2019年3月2日の間にMIAから旅行した乗客の詳細を取得します。bagInfo JSONフィールド内のflightDateフィールドには、宛先ポイントへの移動日が含まれます。BETWEEN演算子を使用して、乗客データのflightDateを、指定した日付の上限と下限の範囲と比較します。flightDateは文字列で、指定された日付(文字列値)と直接比較されます。この範囲内にリストされた乗客レコードを絞り込んで、AND演算子を使用してソース・ステーションとしてMIAのみを含めます。フライト出発地は、フライト出発地またはいずれかのトランジット空港の可能性があります。

出力:
{"fullname":"Zulema Martindale"}
{"fullname":"Joanne Diaz"}