Перейти к основному содержимому
Версия: 2.0.x

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). Поддержка сложных вложенных путей и удаления элементов массива может быть ограничена в текущей реализации.