최종 수정: 에
JSON_REPLACE
설명
JSON_REPLACE 함수는 JSON의 데이터를 바꾸고 결과를 반환하는 데 사용됩니다.
구문
JSON_REPLACE (<json_object>, <path>, <value>[, <path>, <value>, ...])
매개변수
<json_object>: JSON 타입 표현식으로, 수정할 대상입니다.<path>: 문자열 타입 표현식으로, 값을 바꿀 경로를 지정합니다.<value>: JSON 타입 또는TO_JSON에서 지원하는 기타 타입으로, 새로 사용할 값입니다.
반환값
- Nullable(JSON): 수정된 JSON 객체를 반환합니다.
사용 시 참고 사항
- 경로-값 쌍은 왼쪽에서 오른쪽 순서로 평가됩니다.
<path>가 가리키는 값이 JSON 객체에 없으면 아무런 영향을 미치지 않습니다.<path>에는 와일드카드를 포함할 수 없으며, 포함하면 오류가 발생합니다.<json_object>또는<path>가 NULL이면 NULL을 반환합니다.<value>가 NULL이면 JSON null 값이 삽입됩니다.
예제
- 경로-값 쌍은 왼쪽에서 오른쪽 순서로 평가됩니다.
select json_replace('{"k": {"k2": "v2"}}', '$.k', json_parse('{"k2": 321, "k3": 456}'), '$.k.k2', 123);+-------------------------------------------------------------------------------------------------+
| json_replace('{"k": {"k2": "v2"}}', '$.k', json_parse('{"k2": 321, "k3": 456}'), '$.k.k2', 123) |
+-------------------------------------------------------------------------------------------------+
| {"k":{"k2":123,"k3":456}} |
+-------------------------------------------------------------------------------------------------+ <path>가 가리키는 값이 JSON 객체에 없는 경우select json_replace('{"k": 1}', "$.k2", 2);+-------------------------------------+
| json_replace('{"k": 1}', "$.k2", 2) |
+-------------------------------------+
| {"k":1} |
+-------------------------------------+<path>에는 와일드카드를 포함할 수 없습니다.select json_replace('{"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- NULL 매개변수
select json_replace(NULL, '$[1]', 123);+---------------------------------+
| json_replace(NULL, '$[1]', 123) |
+---------------------------------+
| NULL |
+---------------------------------+select json_replace('{"k": "v"}', NULL, 123);+---------------------------------------+
| json_replace('{"k": "v"}', NULL, 123) |
+---------------------------------------+
| NULL |
+---------------------------------------+select json_replace('{"k": "v"}', '$.k', NULL);+-----------------------------------------+
| json_replace('{"k": "v"}', '$.k', NULL) |
+-----------------------------------------+
| {"k":null} |
+-----------------------------------------+