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.