Последнее обновление
JSON_TYPE
Описание
Определяет тип поля, заданного json_path в данных JSONB. Если поле не существует, возвращает NULL. Если поле существует, возвращает один из следующих типов:
- object
- array
- null
- bool
- int
- bigint
- largeint
- double
- string
Синтаксис
JSON_TYPE( <json>, <json_path> )
Параметры
<json>Строка JSON, в которой нужно определить тип поля.<json_path>Строковый параметр, задающий расположение поля в JSON. Путь обычно начинается с $, а точка (.) используется для обозначения иерархической структуры.
Возвращаемое значение
Nullable<String>: возвращает тип соответствующего поля.
Примечания по использованию
- Если
<json>или<json_path>имеет значение NULL, возвращает NULL. - Если
<json_path>содержит недопустимый путь, функция сообщает об ошибке. - Если поле, заданное
<json_path>, не существует, возвращает NULL.
Примеры
-
Значение JSON имеет строковый тип:
SELECT JSON_TYPE('{"name": "John", "age": 30}', '$.name');+----------------------------------------------------+
| JSON_TYPE('{"name": "John", "age": 30}', '$.name') |
+----------------------------------------------------+
| string |
+----------------------------------------------------+ -
Значение JSON имеет числовой тип:
SELECT JSON_TYPE('{"name": "John", "age": 30}', '$.age');+---------------------------------------------------+
| JSON_TYPE('{"name": "John", "age": 30}', '$.age') |
+---------------------------------------------------+
| int |
+---------------------------------------------------+ -
Значение JSON имеет тип double:
select json_type('{"key1": 1234.44}', '$.key1');+------------------------------------------+
| json_type('{"key1": 1234.44}', '$.key1') |
+------------------------------------------+
| double |
+------------------------------------------+ -
Значение JSON имеет тип bool:
select json_type('{"key1": true}', '$.key1');+---------------------------------------+
| json_type('{"key1": true}', '$.key1') |
+---------------------------------------+
| bool |
+---------------------------------------+ -
Параметры со значением NULL
select json_type(NULL, '$.key1');+---------------------------+
| json_type(NULL, '$.key1') |
+---------------------------+
| NULL |
+---------------------------+ -
Параметры со значением NULL 2
select json_type('{"key1": true}', NULL);+-----------------------------------+
| json_type('{"key1": true}', NULL) |
+-----------------------------------+
| NULL |
+-----------------------------------+ -
Поле, заданное параметром
json_path, не существуетselect json_type('{"key1": true}', '$.key2');+---------------------------------------+
| json_type('{"key1": true}', '$.key2') |
+---------------------------------------+
| NULL |
+---------------------------------------+ -
Недопустимый параметр
json_pathselect json_type('{"key1": true}', '$.');ERROR 1105 (HY000): errCode = 2, detailMessage = [INVALID_ARGUMENT]Json path error: Invalid Json Path for value: $.