WHERE句

WHERE句は、FROM句から取得された行をフィルタ処理し、特定の条件を満たす行を返します。

構文

where_clause ::= WHERE expression

セマンティクス

コンテキスト行ごとに、WHERE句の式が評価されます。この式の結果はBOOLEAN ?型である必要があります。結果がfalse、空またはNULLの場合、行はスキップされます。それ以外の場合、行は次の句に渡されます。

例6-7 航空会社アプリケーションからの女性乗客のリストのフェッチ

SELECT
fullname,
ticketNo
FROM Baggageinfo
WHERE gender="F"

説明: 前述の問合せでは、Baggageinfo表から女性乗客の名前とチケットの詳細を一覧表示します。WHERE句は、各レコードのgenderフィールドに基づいて行をフィルタ処理します。genderフィールドのエントリFを保持するすべてのレコードをフェッチします。

出力:
{"fullname":"Adelaide Willard","ticketNo":1762392135540}
{"fullname":"Elane Lemons","ticketNo":1762324912391}
{"fullname":"Michelle Payne","ticketNo":1762330498104}
{"fullname":"Doris Martin","ticketNo":1762355527825}
{"fullname":"Rosalia Triplett","ticketNo":1762311547917}
{"fullname":"Zulema Martindale","ticketNo":1762340579411}
{"fullname":"Joanne Diaz","ticketNo":1762383911861}
{"fullname":"Kendal Biddle","ticketNo":1762377974281}
{"fullname":"Mary Watson","ticketNo":1762340683564}

例6-8 到着地ステーションがMELである乗客リストの航空会社アプリケーションからのフェッチ

SELECT
fullname,
ticketNo,
s.bagInfo.routing[] AS ROUTING
FROM Baggageinfo s
WHERE regex_like(s.bagInfo.routing[], ".*/MEL")

説明: 航空会社アプリケーションでは、特定の到着地ステーションにバインドされた乗客のリストをフェッチできます。bagInfo配列のroutingフィールドは、Baggageinfo表の乗客のルーティング詳細を保持します。ルーティング情報は、Source/Transit/Destination空港コードの形式で格納されます。

この問合せでは、到着地ステーションがMELである乗客の詳細をフェッチします。regex_like関数を使用して、到着地空港コードMELとのパターン一致を実現します。特定の到着地ステーションのみを検索しているため、ピリオド(.)のメタキャラクタとグリーディ数量詞(*)の組合せを使用して、出発地および到着地空港コードがゼロ以上発生することを許可します。regex_like関数の詳細は、正規表現の条件を参照してください。

出力:
{"fullname":"Zulema Martindale","ticketNo":1762340579411,"ROUTING":"MIA/LAX/MEL"}
{"fullname":"Adam Phillips","ticketNo":1762344493810,"ROUTING":"MIA/LAX/MEL"}
{"fullname":"Zina Christenson","ticketNo":1762390789239,"ROUTING":"MIA/LAX/MEL"}
{"fullname":"Joanne Diaz","ticketNo":1762383911861,"ROUTING":"MIA/LAX/MEL"}

例6-9 航空会社アプリケーションでの複数の手荷物を持つ乗客リストのフェッチ

SELECT
fullname,
ticketNo
FROM Baggageinfo s
WHERE EXISTS s.baginfo[1]

説明: この問合せでは、複数の手荷物を持って移動する乗客の名前とチケットの詳細を一覧表示します。bagInfo配列は、1人の乗客が所有するすべての荷物の情報を保持します。1人の乗客が複数の荷物を所有している場合、bagInfo配列には複数の要素が存在します。WHERE句でEXISTS演算子を使用して、baginfo配列に2番目の要素が存在するかどうかを確認します。

出力:
{"fullname":"Lorenzo Phil","ticketNo":1762320369957}

または、size()組込み関数を使用して、1人の乗客が所有する荷物の数であるbaginfo配列のサイズを決定できます。次に、値比較演算子>を使用して、戻り値が1を超えているかどうかを確認します。前述と同じ出力が表示されます。size()関数の詳細は、複合値の関数を参照してください。

SELECT
fullname,
ticketNo
FROM Baggageinfo s
WHERE size(s.baginfo) > 1