json_remove
Удаляет данные из JSON-документа по одному или нескольким указанным JSON-путям и возвращает изменённый JSON-документ.
Все JSON-функции и операторы перечислены в навигации и на обзорной странице
Синтаксис
json_remove(json_object_expr, json_path[, json_path] ...)
Параметры
-
json_object_expr: выражение, представляющее JSON-объект. Объект может быть JSON-столбцом или JSON-объектом, созданным функцией-конструктором JSON, такой как PARSE_JSON. -
json_path: один или несколько выражений, представляющих пути к элементам в JSON-объекте, которые должны быть удалены. Значение каждого параметра — строка. Информацию о синтаксисе JSON-путей, поддерживаемом Selena, см. в разделе Обзор JSON-функций и операторов.
Возвращаемое значение
Возвращает JSON-документ с удалёнными указанными путями.
- Если путь не существует в JSON-документе, он игнорируется.
- Если указан недопустимый путь, он игнорируется.
- Если все пути недопустимы или не существуют, возвращается исходный JSON-документ без изменений.
Примеры
Пример 1: Удалить один ключ из JSON-объекта.
mysql> SELECT json_remove('{"a": 1, "b": [10, 20, 30]}', '$.a');
-> {"b": [10, 20, 30]}
Пример 2: Удалить несколько ключей из JSON-объекта.
mysql> SELECT json_remove('{"a": 1, "b": [10, 20, 30], "c": "test"}', '$.a', '$.c');
-> {"b": [10, 20, 30]}
Пример 3: Удалить элементы массива из JSON-объекта.
mysql> SELECT json_remove('{"a": 1, "b": [10, 20, 30]}', '$.b[1]');
-> {"a": 1, "b": [10, 30]}
Пример 4: Удалить свойства вложенного объекта.
mysql> SELECT json_remove('{"a": {"x": 1, "y": 2}, "b": 3}', '$.a.x');
-> {"a": {"y": 2}, "b": 3}
Пример 5: Попытка удалить несуществующие пути (игнорируются).
mysql> SELECT json_remove('{"a": 1, "b": 2}', '$.c', '$.d');
-> {"a": 1, "b": 2}
Пример 6: Удалить несколько путей, включая несуществующие.
mysql> SELECT json_remove('{"a": 1, "b": 2, "c": 3}', '$.a', '$.nonexistent', '$.c');
-> {"b": 2}
Примечания по использованию
- Функция
json_removeсоответствует поведению, совместимому с MySQL. - Недопустимые JSON-пути молча игнорируются, а не вызывают ошибки.
- Функция поддерживает удаление нескольких путей за одну операцию, что более эффективно, чем несколько отдельных операций.
- В настоящее время функция поддерживает простое удаление ключей объекта (например,
$.key). Поддержка сложных вложенных путей и удаления элементов массива может быть ограничена в текущей реализации.