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> | 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を参照してください。
例
- JSONが文字列タイプの場合:
SELECT JSON_TYPE('{"name": "John", "age": 30}', '$.name');
+-------------------------------------------------------------------+
| jsonb_type(cast('{"name": "John", "age": 30}' as JSON), '$.name') |
+-------------------------------------------------------------------+
| string |
+-------------------------------------------------------------------+
- JSONが数値型の場合:
SELECT JSON_TYPE('{"name": "John", "age": 30}', '$.age');
+------------------------------------------------------------------+
| jsonb_type(cast('{"name": "John", "age": 30}' as JSON), '$.age') |
+------------------------------------------------------------------+
| int |
+------------------------------------------------------------------+