최종 수정: 에
JSON_INSERT
설명
JSON_INSERT 함수는 JSON에 데이터를 삽입하고 결과를 반환하는 데 사용됩니다.
구문
JSON_INSERT (<json_object>, <path>, <value>[, <path>, <value>, ...])
매개변수
<json_object>: JSON 타입 표현식으로, 수정할 대상입니다.<path>: 문자열 타입 표현식으로, 값을 삽입할 경로를 지정합니다.<value>: JSON 타입 또는TO_JSON에서 지원하는 다른 타입으로, 삽입할 값입니다.
반환 값
Nullable(JSON)수정된 JSON 객체를 반환합니다.
사용 시 참고 사항
- 경로-값 쌍은 왼쪽에서 오른쪽 순서로 평가됩니다.
<path>가 가리키는 값이 JSON 객체에 이미 존재하면 아무런 영향을 주지 않습니다.<path>에는 와일드카드를 포함할 수 없으며, 포함하면 오류가 발생합니다.<path>가 여러 단계의 경로를 포함하는 경우, 마지막 단계를 제외한 모든 경로가 JSON 객체에 존재해야 합니다.<path>가 배열 요소를 가리키지만 객체가 실제로 배열이 아닌 경우, 해당 객체를 배열의 첫 번째 요소로 변환한 다음 일반 배열과 동일하게 처리합니다.<json_object>또는<path>가 NULL이면 NULL을 반환합니다.<value>가 NULL이면 JSON null 값을 삽입합니다.
예제
- 경로-값 쌍은 왼쪽에서 오른쪽 순서로 평가됩니다.
select json_insert('{}', '$.k', json_parse('{}'), '$.k.k2', 123);+-----------------------------------------------------------+
| json_insert('{}', '$.k', json_parse('{}'), '$.k.k2', 123) |
+-----------------------------------------------------------+
| {"k":{"k2":123}} |
+-----------------------------------------------------------+ <path>가 가리키는 값이 JSON 객체에 이미 존재하는 경우select json_insert('{"k": 1}', "$.k", 2);+-----------------------------------+
| json_insert('{"k": 1}', "$.k", 2) |
+-----------------------------------+
| {"k":1} |
+-----------------------------------+<path>에는 와일드카드를 포함할 수 없습니다.select json_insert('{"k": 1}', "$.*", 2);ERROR 1105 (HY000): errCode = 2, detailMessage = [INVALID_ARGUMENT] In this situation, path expressions may not contain the * and ** tokens or an array range, argument index: 1, row index: 0- 여러 단계의 경로는 생성할 수 없습니다.
select json_insert('{}', '$.k1.k2.k3', 123);+--------------------------------------+
| json_insert('{}', '$.k1.k2.k3', 123) |
+--------------------------------------+
| {} |
+--------------------------------------+ - 배열로 자동 변환
select json_insert('{"k": "v"}', '$[1]', 123);+----------------------------------------+
| json_insert('{"k": "v"}', '$[1]', 123) |
+----------------------------------------+
| [{"k": "v"}, 123] |
+----------------------------------------+select json_insert('{"k": "v"}', '$.k[1]', 123);+------------------------------------------+
| json_insert('{"k": "v"}', '$.k[1]', 123) |
+------------------------------------------+
| {"k": ["v", 123]} |
+------------------------------------------+ - NULL 매개변수
select json_insert(NULL, '$[1]', 123);+--------------------------------+
| json_insert(NULL, '$[1]', 123) |
+--------------------------------+
| NULL |
+--------------------------------+select json_insert('{"k": "v"}', NULL, 123);+--------------------------------------+
| json_insert('{"k": "v"}', NULL, 123) |
+--------------------------------------+
| NULL |
+--------------------------------------+select json_insert('{"k": "v"}', '$.k[1]', NULL);+-------------------------------------------+
| json_insert('{"k": "v"}', '$.k[1]', NULL) |
+-------------------------------------------+
| {"k": ["v", null]} |
+-------------------------------------------+