メインコンテンツまでスキップ
バージョン: 26.x

JSON_SET

説明

JSON_SET関数は、JSONにデータを挿入または置換し、結果を返すために使用されます。

構文

JSON_SET (<json_object>, <path>,  <value>[, <path>,  <value>, ...])

パラメータ

  • <json_object>: JSON型の式、変更対象となるオブジェクト
  • <path>: 文字列型の式、値を挿入するパスを指定
  • <value>: JSON型またはTO_JSONでサポートされるその他の型、挿入する値

戻り値

  • Nullable(JSON) 変更されたJSONオブジェクトを返す

使用上の注意

  1. <path>で指定されたオブジェクトが存在する場合、その動作はJSON_REPLACEと一致し、そうでなければその動作はJSON_INSERTと一致する

  1. パスが存在しない場合

    select json_set('{}', '$.k', json_parse('{}'), '$.k.k2', 123);
    +--------------------------------------------------------+
    | json_set('{}', '$.k', json_parse('{}'), '$.k.k2', 123) |
    +--------------------------------------------------------+
    | {"k":{"k2":123}} |
    +--------------------------------------------------------+
  2. <path>が指す値がJSONオブジェクト内に既に存在します

    select json_set('{"k": 1}', "$.k", 2);
    +--------------------------------+
    | json_set('{"k": 1}', "$.k", 2) |
    +--------------------------------+
    | {"k":2} |
    +--------------------------------+
  3. NULLパラメータ

    select json_set(NULL, '$[1]', 123);
    +-----------------------------+
    | json_set(NULL, '$[1]', 123) |
    +-----------------------------+
    | NULL |
    +-----------------------------+
    select json_set('{"k": "v"}', NULL, 123);
    +-----------------------------------+
    | json_set('{"k": "v"}', NULL, 123) |
    +-----------------------------------+
    | NULL |
    +-----------------------------------+
    select json_set('{"k": "v"}', '$.k[1]', NULL);
    +----------------------------------------+
    | json_set('{"k": "v"}', '$.k[1]', NULL) |
    +----------------------------------------+
    | {"k":["v",null]} |
    +----------------------------------------+