JSON_TYPE
描述
用来判断 JSON 对象中 <json_path>
指定的字段的类型,如果字段不存在返回 NULL,如果存在返回下面的类型之一:
- object
- array
- null
- bool
- int
- bigint
- largeint
- double
- string
语法
JSON_TYPE(<json_object>, <json_path>)
别名
JSONB_TYPE
参数
<json_object>
: JSON 类型 的表达式。<json_path>
: String 类型,比如"$.key"
。
返回值
Nullable<String>
: 返回对应字段的类型。
使用说明
- 如果
<json_object>
或者<json_path>
是 NULL,返回 NULL。 - 如果
<json_path>
不是一个合法路径,函数报错。 - 如果
<json_path>
指定的字段,返回 NULL。
示例
- Double 类型
select json_type('{"key1": 1234.44}', '$.key1');
+------------------------------------------+
| json_type('{"key1": 1234.44}', '$.key1') |
+------------------------------------------+
| double |
+------------------------------------------+ - BOOLEAN 类型
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: $.