メインコンテンツまでスキップ
バージョン: 4.x

JSON_TYPE

説明

JSONBデータ内でjson_pathにより指定されたフィールドの型を判定するために使用されます。フィールドが存在しない場合は、NULLを返します。フィールドが存在する場合は、以下の型のいずれかを返します:

  • object
  • array
  • null
  • bool
  • int
  • bigint
  • largeint
  • double
  • string

構文

JSON_TYPE( <json>, <json_path> )

Alias

  • JSONB_TYPE

パラメータ

  • <json> タイプをチェックするJSON文字列。
  • <json_path> String型。JSON内のフィールドの位置を指定します。パスは通常$で始まり、階層構造を表すために.を使用します。

Return Value

Nullable<String>: 対応するフィールドのタイプを返します。

Usage 注釈

  • <json_object>または<json_path>がNULLの場合、NULLを返します。
  • <json_path>が有効なパスでない場合、関数はエラーを報告します。
  • <json_path>で指定されたフィールドが存在しない場合、NULLを返します。

Examples

  1. JSONがstring型の場合:

    SELECT JSON_TYPE('{"name": "John", "age": 30}', '$.name');
    +-------------------------------------------------------------------+
    | jsonb_type(cast('{"name": "John", "age": 30}' as JSON), '$.name') |
    +-------------------------------------------------------------------+
    | string |
    +-------------------------------------------------------------------+
  2. JSONが数値型の場合:

    SELECT JSON_TYPE('{"name": "John", "age": 30}', '$.age');
    +------------------------------------------------------------------+
    | jsonb_type(cast('{"name": "John", "age": 30}' as JSON), '$.age') |
    +------------------------------------------------------------------+
    | int |
    +------------------------------------------------------------------+
  3. NULLパラメータ

    select json_type(NULL, '$.key1');
    +---------------------------+
    | json_type(NULL, '$.key1') |
    +---------------------------+
    | NULL |
    +---------------------------+
  4. NULL パラメータ 2

    select json_type('{"key1": true}', NULL);
    +-----------------------------------+
    | json_type('{"key1": true}', NULL) |
    +-----------------------------------+
    | NULL |
    +-----------------------------------+
  5. json_pathパラメータで指定されたフィールドが存在しません

    select json_type('{"key1": true}', '$.key2');
    +---------------------------------------+
    | json_type('{"key1": true}', '$.key2') |
    +---------------------------------------+
    | NULL |
    +---------------------------------------+
  6. 無効なjson_pathパラメータ

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