13.6 JSON_TRANSFORMの演算子COPY
JSON_TRANSFORM
の演算子COPY
は、配列の要素を置き換えます。
これは、LHSのパス式で対象となっている配列の要素を、RHSで指定されている値に置き換えます。この操作は、RHSパス式で一致する複数の値のシーケンスを受け入れることができます。(LHSのパス式で配列が対象となっていない場合は、エラーが発生します。)
例13-12 JSON_TRANSFORM: LHSの配列への複数のRHS値のコピー
この例では、フィールドb
の値を使用することで入力オブジェクトを変換して、フィールドa
の値を変更します。その後、結果であるオブジェクトからフィールドb
を削除します。
操作COPY
は、パス$.b.x
からの複数の値(順番に1
、2
、3
)を、フィールド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 MISSING
、ERROR ON MISSING
、NULL ON MISSING
-
NULL ON NULL
(デフォルト)、IGNORE ON NULL
、ERROR ON NULL
-
IGNORE ON EMPTY
(デフォルト)、ERROR ON EMPTY
.