に最終更新
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 を返します。
例
-
文字列型の JSON 値
SELECT JSON_TYPE('{"name": "John", "age": 30}', '$.name');+----------------------------------------------------+
| JSON_TYPE('{"name": "John", "age": 30}', '$.name') |
+----------------------------------------------------+
| string |
+----------------------------------------------------+ -
数値型の JSON 値
SELECT JSON_TYPE('{"name": "John", "age": 30}', '$.age');+---------------------------------------------------+
| JSON_TYPE('{"name": "John", "age": 30}', '$.age') |
+---------------------------------------------------+
| int |
+---------------------------------------------------+ -
double 型の JSON 値
select json_type('{"key1": 1234.44}', '$.key1');+------------------------------------------+
| json_type('{"key1": 1234.44}', '$.key1') |
+------------------------------------------+
| double |
+------------------------------------------+ -
bool 型の JSON 値
select json_type('{"key1": true}', '$.key1');+---------------------------------------+
| json_type('{"key1": true}', '$.key1') |
+---------------------------------------+
| bool |
+---------------------------------------+ -
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: $.