TD_JSONSHREDは、JSONドキュメント内の入れ子配列からの直接的なデータ抽出には対応しませんが、TD_JSONSHREDへの呼び出しを入れ子にして、入れ子配列からのデータをシュレッドできます。以下に例を示します。SELECT * from TD_JSONSHRED
(ON
(SELECT * FROM TD_JSONSHRED
(ON
(SELECT ID, jsondoc FROM jsontable)
USING
ROWEXPR('employees')
COLEXPR('address')
RETURNTYPES('VARCHAR(100)')
) AS d1
)
USING
ROWEXPR('')
COLEXPR('street','city','state','zipcode')
RETURNTYPES('VARCHAR(20)','VARCHAR(20)','VARCHAR(2)','VARCHAR(10)')
) AS d2;
内部のTD_JSONSHREDでは、JSON addressオブジェクトの値を保持する列がある派生テーブル(d1)が作成されます。この値は、元のJSONドキュメントにある"employees"配列で入れ子になっている配列です。入れ子のaddress配列自体がJSONドキュメントなので、その構成値は、外部TD_JSONSHREDによって派生テーブルd2の個別の列にシュレッドできます。例: TD_JSONSHRED入れ子配列を参照してください。