日志服务 JSON 函数

json_array_contains 函数用于判断 JSON 数组中是否包含某个值。

相关产品
日志服务 产品页,含版本规格、价格与购买入口。

这篇说说 JSON 函数的基本语法及示例。

函数名称 语句 含义
json_array_contains 函数 json_array_contains(x,value) 判断 JSON 数组中是否包含某个值。
json_array_get 函数 json_array_get(x,index) 获取 JSON 数组中某个下标对应的元素。
json_array_length 函数 json_array_length(x) 计算 JSON 数组中元素的数量。x 不是 JSON 数组时,返回 null。
json_extract 函数 json_extract(x,json_path) 从 JSON 对象或 JSON 数组中提取一组 JSON 值(数组或对象)。
json_extract_scalar 函数 json_extract_scalar(x,json_path) 从 JSON 对象或 JSON 数组中提取一组标量值(字符串、整数或布尔值)。类似于 json_extract 函数。
json_format 函数 json_format(x) 把 JSON 类型转化成字符串类型。
json_parse 函数 json_parse(x) 把字符串类型转化成 JSON 类型。
json_size 函数 json_size(x,json_path) 计算 JSON 对象或数组中元素的数量。

二、语法

json_array_contains(x, value)

三、参数说明

参数 说明
x 参数值为 JSON 数组。
value 数值。

四、返回值类型

boolean 类型。

五、示例

判断 JSON 字符[1,2,3]中是否包含2。

·查询和分析语句。

* | SELECT json_array_contains('[1, 2, 3]', 2)

·查询和分析结果。

true

六、json_array_get 函数

json_array_get 函数用于获取 JSON 数组中某个下标对应的元素。

七、语法

json_array_get(x, index)

八、参数说明

参数 说明
x 参数值为 JSON 数组。
index JSON 下标,从0开始。

九、返回值类型

varchar 类型。

十、示例

返回 JSON 数组["a", [3, 9], "c"]下标为1的元素。

·查询和分析语句。

* | SELECT json_array_get('["a", [3, 9], "c"]', 1)

·查询和分析结果。

[3,9]

十一、json_array_length 函数

json_array_length 函数用于计算 JSON 数组中元素的数量。x 不是 JSON 数组时,返回 null。

十二、语法

json_array_length(x)

十三、参数说明

参数 说明
x 参数值为 JSON 数组。

十四、返回值类型

bigint 类型。

十五、示例

·示例1:计算 apple.message 字段值中 JSON 元素的数量。

apple.message:[{"traceName":"StoreMonitor"},{"topicName":"persistent://apache/pulsar/test-partition-17"},{"producerName":"pulsar-mini-338-36"},{"localAddr":"pulsar://pulsar-mini-broker-5.pulsar-mini-broker.pulsar.svc.cluster.local:6650"},{"sequenceId":826},{"storeTime":1635905306062},{"messageId":"19422-24519"},{"status":"SUCCESS"}]

·查询和分析语句。

* | SELECT json_array_length(apple.message)

·查询和分析结果。

8

十六、json_extract 函数

json_extract 函数用于从 JSON 对象或 JSON 数组中提取一组 JSON 值(数组或对象)。

十七、语法

json_extract(x, json_path)

十八、参数说明

参数 说明
x 参数值为 JSON 对象或 JSON 数组。
json_path JSONPath 形式的 JSON 路径,例如$.store.book[0].title。注意:不支持需要遍历数组元素的 JSON 语法,例如$.store.book[*].author、$..book[(@.length-1)]、$..book[?(@.price<10)]等。元素名称包含特殊字符时,使用[]语法代替.语法并用双引号包裹元素名称,例如$.store["book name"]。

十九、返回值类型

JSON 格式的 string 类型。

20、示例

获取 apple.instant 字段中 epochSecond 的值。

·字段样例。

apple.instant:{"epochSecond":1635905306,"nanoOfSecond":63001000}

·查询和分析语句。

* | SELECT json_extract(apple.instant, '$.epochSecond')

·查询和分析结果。

1635905306

21、json_extract_scalar 函数

json_extract_scalar 函数用于从 JSON 对象或 JSON 数组中提取一组标量值(字符串、整数或布尔值)。

22、语法

json_extract_scalar(x, json_path)

23、参数说明

参数 说明
x 参数值为 JSON 数组。
json_path JSONPath 形式的 JSON 路径,例如$.store.book[0].title。注意:不支持需要遍历数组元素的 JSON 语法,例如$.store.book[*].author、$..book[(@.length-1)]、$..book[?(@.price<10)] 等。元素名称包含特殊字符时,使用[]语法代替.语法并用双引号包裹元素名称,例如$.store["book name"]。

24、返回值类型

varchar 类型。

25、示例

从 apple.instant 字段中获取 epochSecond 字段的值,并将该值转换为 bigint 类型进行求和。

·字段样例。

apple.instant:{"epochSecond":1635905306,"nanoOfSecond":63001000}

·查询和分析语句。

* | SELECT sum(cast(json_extract_scalar(apple.instant,'$.epochSecond') AS bigint) )

·查询和分析结果。

1635905306

26、json_format 函数

json_format 函数用于将 JSON 类型转化成字符串类型。

27、语法

json_format(x)

28、参数说明

参数 说明
x 参数值为 JSON 类型。

29、返回值类型

varchar 类型。

30、示例

将 JSON 数组[1,2,3]转换为字符串。

·查询和分析语句。

* | SELECT json_format(json_parse('[1, 2, 3]'))

·查询和分析结果。

[1, 2, 3]

31、json_parse 函数

json_parse 函数只用于将字符串类型转化成 JSON 类型,判断是否符合 JSON 格式。

32、语法

json_parse(x)

33、参数说明

参数 说明
x 参数值为字符串。

34、返回值类型

JSON 类型。

35、示例

将字符串[1, 2, 3]转换为 JSON 数组。

·查询和分析语句。

* | SELECT json_parse('[1, 2, 3]')

·查询和分析结果。

[1, 2, 3]

36、json_size 函数

json_size 函数用于计算 JSON 对象或 JSON 数组中元素的数量。

37、语法

json_size(x, json_path)

38、参数说明

参数 说明
x 参数值为 JSON 对象或 JSON 数组。
json_path JSONPath 形式的 JSON 路径,例如$.store.book[0].title。注意:不支持需要遍历数组元素的 JSON 语法,例如$.store.book[*].author、$..book[(@.length-1)]、$..book[?(@.price<10)]等。元素名称包含特殊字符时,使用[]语法代替.语法并用双引号包裹元素名称,例如$.store["book name"]。

39、返回值类型

bigint 类型。

40、示例

获取 JSON 数组[1,2,3]的长度。

·查询和分析语句。

* | SELECT json_size(json_parse('[1, 2, 3]'),'$')

·查询和分析结果。

3

赞 (0)
上一篇 4天前
下一篇 4天前