メインコンテンツまでスキップ

JSON_TYPE

説明

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

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

構文

JSON_TYPE( <json>, <json_path> )

エイリアス

  • JSONB_TYPE

必須パラメータ

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

戻り値

JSON文字列の型を返します。可能な値は以下の通りです:

  • "NULL": JSONドキュメント内の値がnullであることを示します。
  • "BOOLEAN": JSONドキュメント内の値がboolean型(trueまたはfalse)であることを示します。
  • "NUMBER": JSONドキュメント内の値が数値であることを示します。
  • "STRING": JSONドキュメント内の値が文字列であることを示します。
  • "OBJECT": JSONドキュメント内の値がJSONオブジェクトであることを示します。
  • "ARRAY": JSONドキュメント内の値がJSON配列であることを示します。

使用上の注意

JSON_TYPEはJSONドキュメントの最も外側の値の型を返します。JSONドキュメントに複数の異なる型の値が含まれている場合、最も外側の値の型を返します。無効なJSON文字列の場合、JSON_TYPEはNULLを返します。json tutorialを参照してください。

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