12.17.5 Функции, возвращающие атрибуты значений JSON
Функции в этом разделе возвращают атрибуты значений JSON.
-
Возвращает максимальную глубину документа JSON. Возвращает
NULL, если аргумент являетсяNULL. Возникает ошибка, если аргумент не является допустимым документом JSON.Пустой массив, пустой объект или скалярное значение имеют глубину 1. Непустой массив, содержащий только элементы глубиной 1, или непустой объект, содержащий только члены с глубиной 1, имеют глубину 2. В противном случае документ JSON имеет глубину больше 2.
mysql>
SELECT JSON_DEPTH('{}'), JSON_DEPTH('[]'), JSON_DEPTH('true');+------------------+------------------+--------------------+ | JSON_DEPTH('{}') | JSON_DEPTH('[]') | JSON_DEPTH('true') | +------------------+------------------+--------------------+ | 1 | 1 | 1 | +------------------+------------------+--------------------+ mysql>SELECT JSON_DEPTH('[10, 20]'), JSON_DEPTH('[[], {}]');+------------------------+------------------------+ | JSON_DEPTH('[10, 20]') | JSON_DEPTH('[[], {}]') | +------------------------+------------------------+ | 2 | 2 | +------------------------+------------------------+ mysql>SELECT JSON_DEPTH('[10, {"a": 20}]');+-------------------------------+ | JSON_DEPTH('[10, {"a": 20}]') | +-------------------------------+ | 3 | +-------------------------------+ -
Возвращает длину документа JSON или, если задан аргумент
path, длину значения в документе, определяемого путем. ВозвращаетNULL, если любой аргумент являетсяNULLили аргументpathне определяет значение в документе. Возникает ошибка, если аргументjson_docне является допустимым документом JSON или аргументpathне является допустимым выражением пути или содержит подстановочный символ*или**.Длина документа определяется следующим образом:
Длина скаляра равна 1.
Длина массива равна количеству элементов массива.
Длина объекта равна количеству членов объекта.
Длина не учитывает длину вложенных массивов или объектов.
mysql>
SELECT JSON_LENGTH('[1, 2, {"a": 3}]');+---------------------------------+ | JSON_LENGTH('[1, 2, {"a": 3}]') | +---------------------------------+ | 3 | +---------------------------------+ mysql>SELECT JSON_LENGTH('{"a": 1, "b": {"c": 30}}');+-----------------------------------------+ | JSON_LENGTH('{"a": 1, "b": {"c": 30}}') | +-----------------------------------------+ | 2 | +-----------------------------------------+ mysql>SELECT JSON_LENGTH('{"a": 1, "b": {"c": 30}}', '$.b');+------------------------------------------------+ | JSON_LENGTH('{"a": 1, "b": {"c": 30}}', '$.b') | +------------------------------------------------+ | 1 | +------------------------------------------------+ -
Возвращает строку
utf8mb4, указывающую тип значения JSON. Это может быть объект, массив или скалярный тип, как показано здесь:mysql>
SET @j = '{"a": [10, true]}';mysql>SELECT JSON_TYPE(@j);+---------------+ | JSON_TYPE(@j) | +---------------+ | OBJECT | +---------------+ mysql>SELECT JSON_TYPE(JSON_EXTRACT(@j, '$.a'));+------------------------------------+ | JSON_TYPE(JSON_EXTRACT(@j, '$.a')) | +------------------------------------+ | ARRAY | +------------------------------------+ mysql>SELECT JSON_TYPE(JSON_EXTRACT(@j, '$.a[0]'));+---------------------------------------+ | JSON_TYPE(JSON_EXTRACT(@j, '$.a[0]')) | +---------------------------------------+ | INTEGER | +---------------------------------------+ mysql>SELECT JSON_TYPE(JSON_EXTRACT(@j, '$.a[1]'));+---------------------------------------+ | JSON_TYPE(JSON_EXTRACT(@j, '$.a[1]')) | +---------------------------------------+ | BOOLEAN | +---------------------------------------+JSON_TYPE()возвращаетNULL, если аргумент являетсяNULL:mysql>
SELECT JSON_TYPE(NULL);+-----------------+ | JSON_TYPE(NULL) | +-----------------+ | NULL | +-----------------+Возникает ошибка, если аргумент не является допустимым значением JSON:
mysql>
SELECT JSON_TYPE(1);ERROR 3146 (22032): Invalid data type for JSON data in argument 1 to function json_type; a JSON string or JSON type is required.Для результата, не являющегося
NULL, и не являющегося ошибкой, следующий список описывает возможные значения возвратаJSON_TYPE():-
Чисто JSON типы:
OBJECT: JSON объектыARRAY: JSON массивыBOOLEAN: Литералы JSON true и falseNULL: Литерал JSON null
-
Числовые типы:
-
Временные типы:
-
Строковые типы:
-
Бинарные типы:
-
Все остальные типы:
OPAQUE(необработанные биты)
-
-
Возвращает 0 или 1, чтобы указать, является ли значение допустимым JSON. Возвращает
NULL, если аргумент являетсяNULL.mysql>
SELECT JSON_VALID('{"a": 1}');+------------------------+ | JSON_VALID('{"a": 1}') | +------------------------+ | 1 | +------------------------+ mysql>SELECT JSON_VALID('hello'), JSON_VALID('"hello"');+---------------------+-----------------------+ | JSON_VALID('hello') | JSON_VALID('"hello"') | +---------------------+-----------------------+ | 0 | 1 | +---------------------+-----------------------+
© 2025 Oracle
Licensed under the GPLv2 License.