본문으로 건너뛰기
최종 수정: 에

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. JSON 객체에 <path>가 가리키는 값이 이미 존재하는 경우
    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]} |
    +----------------------------------------+