Перейти к содержимому
Последнее обновление

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.

Примеры​

  1. Значение JSON имеет строковый тип:

    SELECT JSON_TYPE('{"name": "John", "age": 30}', '$.name');
    +----------------------------------------------------+
    | JSON_TYPE('{"name": "John", "age": 30}', '$.name') |
    +----------------------------------------------------+
    | string |
    +----------------------------------------------------+
  2. Значение JSON имеет числовой тип:

    SELECT JSON_TYPE('{"name": "John", "age": 30}', '$.age');
    +---------------------------------------------------+
    | JSON_TYPE('{"name": "John", "age": 30}', '$.age') |
    +---------------------------------------------------+
    | int |
    +---------------------------------------------------+
  3. Значение JSON имеет тип double:

    select json_type('{"key1": 1234.44}', '$.key1');
    +------------------------------------------+
    | json_type('{"key1": 1234.44}', '$.key1') |
    +------------------------------------------+
    | double |
    +------------------------------------------+
  4. Значение JSON имеет тип bool:

    select json_type('{"key1": true}', '$.key1');
    +---------------------------------------+
    | json_type('{"key1": true}', '$.key1') |
    +---------------------------------------+
    | bool |
    +---------------------------------------+
  5. Параметры со значением NULL

    select json_type(NULL, '$.key1');
    +---------------------------+
    | json_type(NULL, '$.key1') |
    +---------------------------+
    | NULL |
    +---------------------------+
  6. Параметры со значением NULL 2

    select json_type('{"key1": true}', NULL);
    +-----------------------------------+
    | json_type('{"key1": true}', NULL) |
    +-----------------------------------+
    | NULL |
    +-----------------------------------+
  7. Поле, заданное параметром json_path, не существует

    select json_type('{"key1": true}', '$.key2');
    +---------------------------------------+
    | json_type('{"key1": true}', '$.key2') |
    +---------------------------------------+
    | NULL |
    +---------------------------------------+
  8. Недопустимый параметр json_path

    select json_type('{"key1": true}', '$.');
    ERROR 1105 (HY000): errCode = 2, detailMessage = [INVALID_ARGUMENT]Json path error: Invalid Json Path for value: $.