13.6 JSON_TRANSFORMの演算子COPY

JSON_TRANSFORMの演算子COPYは、配列の要素を置き換えます。

これは、LHSのパス式で対象となっている配列の要素を、RHSで指定されている値に置き換えます。この操作は、RHSパス式で一致する複数の値のシーケンスを受け入れることができます。(LHSのパス式で配列が対象となっていない場合は、エラーが発生します。)

例13-12 JSON_TRANSFORM: LHSの配列への複数のRHS値のコピー

この例では、フィールドbの値を使用することで入力オブジェクトを変換して、フィールドaの値を変更します。その後、結果であるオブジェクトからフィールドbを削除します。

操作COPYは、パス$.b.xからの複数の値(順番に123)を、フィールドaの値である配列にコピーします。

SELECT json_transform('{"a":[], "b":[ {"x":1}, {"x":2}, {"x":3} ]}',
                      COPY '$.a' = PATH '$.b.x',
                      REMOVE '$.b');

結果:

{"a":[ 1, 2, 3 ]}

演算子COPYで使用できるハンドラは次のとおりです:

  • CREATE ON MISSING (デフォルト)、IGNORE ON MISSINGERROR ON MISSINGNULL ON MISSING

  • NULL ON NULL (デフォルト)、IGNORE ON NULL ERROR ON NULL

  • IGNORE ON EMPTY (デフォルト)、ERROR ON EMPTY.