メインコンテンツまでスキップ
に最終更新

JSON_TYPE

説明​

JSONB データ内で json_path が指定するフィールドの型を判定します。フィールドが存在しない場合は 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. double 型の JSON 値

    select json_type('{"key1": 1234.44}', '$.key1');
    +------------------------------------------+
    | json_type('{"key1": 1234.44}', '$.key1') |
    +------------------------------------------+
    | double |
    +------------------------------------------+
  4. bool 型の JSON 値

    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: $.