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
-
JSONがstring型の場合:
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 |
+------------------------------------------------------------------+ -
NULLパラメータ
select json_type(NULL, '$.key1');+---------------------------+
| json_type(NULL, '$.key1') |
+---------------------------+
| NULL |
+---------------------------+ -
NULL パラメータ 2
select json_type('{"key1": true}', NULL);+-----------------------------------+
| json_type('{"key1": true}', NULL) |
+-----------------------------------+
| NULL |
+-----------------------------------+ -
json_pathパラメータで指定されたフィールドが存在しませんselect json_type('{"key1": true}', '$.key2');+---------------------------------------+
| json_type('{"key1": true}', '$.key2') |
+---------------------------------------+
| NULL |
+---------------------------------------+ -
無効な
json_pathパラメータselect json_type('{"key1": true}', '$.');ERROR 1105 (HY000): errCode = 2, detailMessage = [INVALID_ARGUMENT]Json path error: Invalid Json Path for value: $.