JSON 函数概述
StarRocks 支持如下 JSON 构造函数、JSON 查询和处理函数、JSON 运算符以及查询 JSON 对象的 JSON Path。
JSON 构造函数
JSON 构造函数可以构造 JSON 类型的数据。例如 JSON 类型的对象、JSON 类型的数组等。
函数名称 | 功能 | 示例 | 返回结果 |
---|---|---|---|
json_object | 构造 JSON 类型的对象。 |
SELECT JSON_OBJECT('Daniel Smith', 26, 'Lily Smith', 25);
|
{"Daniel Smith": 26, "Lily Smith": 25}
|
json_array | 构造 JSON 类型的数组。 |
SELECT JSON_ARRAY(1, 2, 3);
|
[1,2,3]
|
parse_json | 从字符串解析并构造出 JSON 类型的数据。 |
SELECT PARSE_JSON('{"a": 1}');
|
{"a": 1}
|
JSON 查询和处理函数
JSON 查询和处理函数可以查询和处理 JSON 类型的数据。例如查询 JSON 对象中指定路径下的值。
函数名称 | 功能 | 示例 | 返回结果 |
---|---|---|---|
箭头函数 | 查询 JSON 对象中指定路径下的值。 |
SELECT parse_json('{"a": {"b": 1}}') -> '$.a.b';
|
1
|
JSON 类型转换 | 将实现 JSON 类型的数据与 SQL 类型间的互相转换。 |
SELECT CAST(1 AS JSON);
|
1
|
get_json_double | 解析并获取 json_str 内 json_path 的浮点型内容。 |
SELECT get_json_double('{"k1":1.3, "k2":"2"}', "$.k1");
|
1.3
|
get_json_int | 解析并获取 json_str 内 json_path 的整型内容。 |
SELECT get_json_int('{"k1":1, "k2":"2"}', "$.k1");
|
1
|
get_json_string | 解析并获取 json_str 内 json_path 指定的字符串。该函数别名为 get_json_object. |
SELECT get_json_string('{"k1":"v1", "k2":"v2"}', "$.k1");
|
v1
|
json_each | 将最外层的 JSON 对象展开为键值对。 |
SELECT * FROM tj_test, LATERAL JSON_EACH(j);
|
![]() |
json_exists | 查询 JSON 对象中是否存在某个值。如果存在,则返回 1;如果不存在,则返回 0。 |
SELECT JSON_EXISTS('{"a": 1}', '$.a');
|
1
|
json_keys | 返回 JSON 对象中所有最上层成员 (key) 组成的数组。 |
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": 3}');
|
["a", "b", "c"]
|
json_length | 返回 JSON 字符串的长度。 |
SELECT json_length('{"Name": "Alice"}');
|
1
|
json_query | 查询 JSON 对象中指定路径下的值。 |
SELECT JSON_QUERY('{"a": 1}', '$.a');
|
1
|
json_string | 将 JSON 对象转化为 JSON 字符串。 |
SELECT json_string(parse_json('{"Name": "Alice"}'));
|
{"Name": "Alice"}
|
JSON 运算符
StarRocks 支持使用
<
,
<=
,
>
,
>=
,
=
,
!=
运算符查询 JSON 数据,不支持使用 IN 运算符。JSON 运算符的更多说明,请参见
JSON 运算符
。