Последнее обновление
JSON_SET
Описание
Функция JSON_SET вставляет или заменяет данные в JSON и возвращает результат.
Синтаксис
JSON_SET (<json_object>, <path>, <value>[, <path>, <value>, ...])
Параметры
<json_object>: выражение типа JSON, задающее объект для изменения.<path>: выражение строкового типа, задающее путь для вставки значения<value>: значение для вставки типа JSON или другого типа, поддерживаемого функциейTO_JSON.
Возвращаемое значение
- Nullable(JSON) Возвращает изменённый объект JSON
Примечания по использованию
- Если объект, на который указывает
<path>, существует, функция ведёт себя так же, какJSON_REPLACE, иначе — какJSON_INSERT
Примеры
- Путь не существует
select json_set('{}', '$.k', json_parse('{}'), '$.k.k2', 123);+--------------------------------------------------------+
| json_set('{}', '$.k', json_parse('{}'), '$.k.k2', 123) |
+--------------------------------------------------------+
| {"k":{"k2":123}} |
+--------------------------------------------------------+ - Значение, на которое указывает
<path>, уже существует в объекте JSONselect json_set('{"k": 1}', "$.k", 2);+--------------------------------+
| json_set('{"k": 1}', "$.k", 2) |
+--------------------------------+
| {"k":2} |
+--------------------------------+ - Параметры со значением 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]} |
+----------------------------------------+