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

json_contains

Проверяет, содержит ли JSON-документ определённое значение или поддокумент. Если целевой JSON-документ содержит искомое JSON-значение, функция JSON_CONTAINS возвращает 1. В противном случае функция JSON_CONTAINS возвращает 0.

подсказка

Все JSON-функции и операторы перечислены в навигации и на обзорной странице

Синтаксис

json_contains(json_target, json_candidate)

Параметры

  • json_target: выражение, представляющее целевой JSON-документ. Документ может быть JSON-столбцом или JSON-объектом, созданным функцией-конструктором JSON, такой как PARSE_JSON.

  • json_candidate: выражение, представляющее искомое JSON-значение или поддокумент для поиска в целевом документе. Значение может быть JSON-столбцом или JSON-объектом, созданным функцией-конструктором JSON, такой как PARSE_JSON.

Возвращаемое значение

Возвращает значение типа BOOLEAN.

Примечания по использованию

  • Для скалярных значений (строки, числа, логические значения, null) функция возвращает true, если значения равны.
  • Для JSON-объектов функция возвращает true, если целевой объект содержит все пары ключ-значение из искомого объекта.
  • Для JSON-массивов функция возвращает true, если целевой массив содержит все элементы из искомого массива, или если искомое значение является отдельным значением, содержащимся в целевом массиве.
  • Функция выполняет глубокую проверку вложенности для вложенных структур.

Примеры

Пример 1: Проверить, содержит ли JSON-объект определённую пару ключ-значение.

mysql> SELECT json_contains(PARSE_JSON('{"a": 1, "b": 2}'), PARSE_JSON('{"a": 1}'));

-> 1

Пример 2: Проверить, содержит ли JSON-объект несуществующую пару ключ-значение.

mysql> SELECT json_contains(PARSE_JSON('{"a": 1, "b": 2}'), PARSE_JSON('{"c": 3}'));

-> 0

Пример 3: Проверить, содержит ли JSON-массив определённые элементы.

mysql> SELECT json_contains(PARSE_JSON('[1, 2, 3, 4]'), PARSE_JSON('[2, 3]'));

-> 1

Пример 4: Проверить, содержит ли JSON-массив одиночное скалярное значение.

mysql> SELECT json_contains(PARSE_JSON('[1, 2, 3, 4]'), PARSE_JSON('2'));

-> 1

Пример 5: Проверить, содержит ли JSON-массив несуществующие элементы.

mysql> SELECT json_contains(PARSE_JSON('[1, 2, 3, 4]'), PARSE_JSON('[5, 6]'));

-> 0

Пример 6: Проверка вложенности для вложенных JSON-структур.

mysql> SELECT json_contains(PARSE_JSON('{"users": [{"id": 1, "name": "John"}, {"id": 2, "name": "Jane"}]}'),
PARSE_JSON('{"users": [{"id": 1}]}'));

-> 0

Примечание: В последнем примере результат равен 0, потому что проверка вложенности массивов требует точного соответствия элементов, а не частичного соответствия объектов внутри массивов.