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, потому что проверка вложенности массивов требует точного соответствия элементов, а не частичного соответствия объектов внутри массивов.