- StarRocks介绍
- 快速开始
- 表设计
- 数据导入
- 数据提取
- 使用StarRocks
- 参考手册
- SQL参考
- 用户账户管理
- 集群管理
- ADMIN CANCEL REPAIR
- ADMIN CHECK TABLET
- ADMIN REPAIR
- ADMIN SET CONFIG
- ADMIN SET REPLICA STATUS
- ADMIN SHOW CONFIG
- ADMIN SHOW REPLICA DISTRIBUTION
- ADMIN SHOW REPLICA STATUS
- ALTER SYSTEM
- CANCEL DECOMMISSION
- CREATE FILE
- DROP FILE
- ENTER
- INSTALL PLUGIN
- LINK DATABASE
- MIGRATE DATABASE
- SHOW BACKENDS
- SHOW BROKER
- SHOW FRONTENDS
- SHOW FULL COLUMNS
- SHOW INDEX
- SHOW MIGRATIONS
- SHOW PLUGINS
- SHOW TABLE STATUS
- SHOW FILE
- UNINSTALL PLUGIN
- DDL
- ALTER DATABASE
- ALTER TABLE
- ALTER VIEW
- BACKUP
- CANCEL BACKUP
- CANCEL RESTORE
- CREATE DATABASE
- CREATE INDEX
- CREATE MATERIALIZED VIEW
- CREATE REPOSITORY
- CREATE RESOURCE
- CREATE TABLE AS SELECT
- CREATE TABLE LIKE
- CREATE TABLE
- CREATE VIEW
- CREATE FUNCTION
- DROP DATABASE
- DROP INDEX
- DROP MATERIALIZED VIEW
- DROP REPOSITORY
- DROP RESOURCE
- DROP TABLE
- DROP VIEW
- DROP FUNCTION
- HLL
- RECOVER
- RESTORE
- SHOW RESOURCES
- SHOW FUNCTION
- TRUNCATE TABLE
- DML
- ALTER ROUTINE LOAD
- BROKER LOAD
- CANCEL LOAD
- DELETE
- EXPORT
- GROUP BY
- INSERT
- PAUSE ROUTINE LOAD
- RESUME ROUTINE LOAD
- CREATE ROUTINE LOAD
- SELECT
- SHOW ALTER
- SHOW BACKUP
- SHOW DATA
- SHOW DATABASES
- SHOW DELETE
- SHOW DYNAMIC PARTITION TABLES
- SHOW EXPORT
- SHOW LOAD
- SHOW PARTITIONS
- SHOW PROPERTY
- SHOW REPOSITORIES
- SHOW RESTORE
- SHOW ROUTINE LOAD
- SHOW ROUTINE LOAD TASK
- SHOW SNAPSHOT
- SHOW TABLES
- SHOW TABLET
- SHOW TRANSACTION
- SPARK LOAD
- STOP ROUTINE LOAD
- STREAM LOAD
- 数据类型
- 辅助命令
- 函数参考
- 日期函数
- convert_tz
- curdate
- current_timestamp
- curtime
- datediff
- date_add
- date_format
- date_sub
- date_trunc
- day
- dayname
- dayofmonth
- dayofweek
- dayofyear
- from_days
- from_unixtime
- hour
- minute
- month
- monthname
- now
- second
- str_to_date
- timediff
- timestampadd
- timestampdiff
- to_date
- to_days
- unix_timestamp
- utc_timestamp
- weekofyear
- year
- hours_diff
- minutes_diff
- months_diff
- seconds_diff
- weeks_diff
- years_diff
- quarter
- timestamp
- time_to_sec
- str2date
- microseconds_add
- microseconds_sub
- 加密函数
- 地理位置函数
- 字符串函数
- append_trailing_char_if_absent
- ascii
- char_length
- concat
- concat_ws
- ends_with
- find_in_set
- group_concat
- instr
- lcase
- left
- length
- locate
- lower
- lpad
- ltrim
- rtrim
- money_format
- null_or_empty
- regexp_extract
- regexp_replace
- repeat
- reverse
- right
- rpad
- split
- split_part
- starts_with
- strleft
- strright
- hex
- unhex
- substr
- space
- parse_url
- JSON 函数
- JSON 函数和运算符
- JSON 构造函数
- JSON 查询和处理函数
- JSON 运算符
- get_json_double
- get_json_int
- get_json_string
- 模糊/正则匹配函数
- 工具函数
- 聚合函数
- Bitmap函数
- 数组函数
- bit函数
- cast函数
- hash函数
- 条件函数
- 百分位函数
- 数学函数
- 日期函数
- 系统变量
- 错误码
- 系统限制
- SQL参考
- 管理指南
- 常见问题解答
- 性能测试
- Release Notes
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 {"a": {"b": 1}} -> '$.a.b' | 1 |
JSON_QUERY | 查询 JSON 对象中指定路径下的值。 | SELECT JSON_QUERY({"a": 1}, '$.a') | 1 |
JSON_EXISTS | 查询 JSON 对象中是否存在某个值。如果存在,则返回 1;如果不存在,则返回 0。 | SELECT JSON_EXISTS({"a": 1}, '$.a') | 1 |
JSON_EACH | 将最外层的 JSON 对象展开为键值对。 | SELECT * FROM JSON_EACH('{"a": 1, "b":{"c": 3, "d": null}} | key | value -----+---- a | 1 b | {"c": 3, "d": null} |
JSON 类型转换 | 将实现 JSON 类型的数据与 SQL 类型间的互相转换。 | SELECT CAST(PARSE_JSON('1') as INT); | 1 |
JSON 运算符
StarRocks 支持使用 <,<=,>,>=, =,!= 运算符查询 JSON 数据,不支持使用 IN 运算符。JSON 运算符的更多说明,请参见 JSON 运算符。
JSON Path
您可以使用 JSON Path 路径表达式,查询 JSON 类型的对象中指定路径的值。JSON Path 为字符串类型,一般结合多种 JSON 函数使用(例如 JSON_QUERY)。目前 StarRocks 中 JSON Path 没有完全遵循 SQL/JSONPath 标准。StarRocks 中 JSON Path 语法说明,参见下表(以如下 JSON object 为例)。
{
"people": [{
"name": "Daniel",
"surname": "Smith"
}, {
"name": "Lily",
"surname": "Smith",
"active": true
}]
}
JSON Path 的符号 | 说明 | JSON Path 示例 | 查询上述 JSON 对象的值 |
---|---|---|---|
$ | 表示根节点的对象。 | '$' | { "people": [ { "name": "Daniel", "surname": "Smith" }, { "name": "Lily", "surname": Smith, "active": true } ] } |
. | 表示子节点。 | ' $.people' | [ { "name": "Daniel", "surname": "Smith" }, { "name": "Lily", "surname": Smith, "active": true } ] |
[] | 表示一个或多个数组下标。[n] 表示选择数组中第 n 个元素,从 0 开始计数。 | '$.people [0]' | { "name": "Daniel", "surname": "Smith" } |
[*] | 表示数组中的全部元素。 | '$.people[*].name' | ["Daniel", "Lily"] |
[start: end] | 表示数组片段,区间为 [start, end),不包含 end 代表的元素。 | '$.people[0: 1].name' | ["Daniel"] |