複合データ型のサイズの検索

size関数を使用すると、複合データ型のサイズ(フィールドまたはエントリの数)を返すことができます。

例1: チケット番号が1762320569757の乗客の飛行区間/中継点の数を確認します。
SELECT bagDet.fullName, size(bagDet.bagInfo.flightLegs) as Noof_Legs
FROM BaggageInfo bagDet WHERE ticketNo=1762320569757

説明: 前述の問合せで、size関数を使用してflightLegs配列のサイズを取得します。

出力:
{"fullName":"Lucinda Beckman","Noof_Legs":3}
例2: チケット番号が1762357254392の乗客について、第1区間でのアクション・エントリ(手荷物のもの)の数を確認します。
SELECT bagDet.fullName, size(bagDet.bagInfo[].flightLegs[0].actions) AS FirstLeg_NoofActions
FROM BaggageInfo bagDet WHERE ticketNo=1762357254392
出力:
{"fullName":"Teena Colley","FirstLeg_NoofActions":3}
例3: チケット番号が1762340683564の乗客について、第1区間で実行された最後のトランジット・アクションの更新の詳細を表示します。
SELECT bagDet.fullName,
(bagDet.bagInfo[].flightLegs[0].values())[size(bagDet.bagInfo.flightLegs[0].actions)-1].actionCode
AS lastTransit_Update FROM BaggageInfo bagDet WHERE ticketNo=1762340683564
出力:
{"fullName":"Mary Watson","lastTransit_Update":"Checkin at YYZ"}

説明:

前述の問合せは、次のステップを使用して処理されます。
    1. $bagDet.bagInfo[].flightLegs[0].values()は、flightLegs配列の最初のレコードのすべてのエントリを示します。
    2. size(bagDet.bagInfo.flightLegs[0].actions)は、第1区間のactions配列のサイズを示します。
    3. actions配列に複数のレコードがあります。size関数の結果を使用して、アクション配列の最後のレコードを取得し、対応するactionCodeをフェッチできます。配列の索引が0で始まるため、サイズから1を減算します。

ノート:

「ネストされたデータ型の操作」のトピックでは、actions配列の索引をハードコードすることで、同じ問合せが記述されています。size関数を使用して、索引をハードコードすることなく、同じ問合せを一般的な方法でリライトしました。