JSON_TYPE
描述
用来判断json_path指定的字段在JSONB数据中的类型,如果字段不存在返回NULL,如果存在返回下面的类型之一
- object
- array
- null
- bool
- int
- bigint
- largeint
- double
- string
语法
STRING JSON_TYPE( <json> )
别名
- JSONB_TYPE
必选参数
参数 | 描述 |
---|---|
<json> | 需要检查类型的 JSON 字符串。 |
返回值
返回 JSON 字符串的类型,可能的值包括:
- "NULL":表示 JSON 文档的值为 null。
- "BOOLEAN":表示 JSON 文档的值为布尔类型(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 |
+------------------------------------------------------------------+