函数名称 | 语句 | 含义 |
[x] | []用于获取数组中的某个元素,等同于 element_at 函数。 | |
array_agg(x) | 以数组形式返回 x 中的所有值。 | |
array_distinct(x) | 数组去重,获取数组中的唯一元素。 | |
array_except(x,y) | 计算 x,y 两个数组的差集。 | |
array_intersect(x, y) | 计算 x,y 两个数组的交集。 | |
array_join(x, delimiter) | 使用指定的连接符将数组中的元素拼接为一个字符串。如果数组中包含 null 元素,则 null 元素将被忽略。说明: 使用 array_join 函数时,返回结果最大为1KB,超出1KB的数据会被截断。 | |
| array_join(x, delimiter, null_replacement) | 把字符串数组用 delimiter 连接,拼接成字符串,null 值用 null_replacement 替代。说明: 使用 array_join 函数时,返回结果最大为1KB,超出1KB的数据会被截断。 |
array_max(x) | 获取数组中的最大值。 | |
array_max(x) | 获取数组中的最小值。 | |
array_position(x, element) | 获取指定元素的下标,下标从1开始。如果指定元素不存在,则返回0。 | |
array_remove(x, element) | 删除数组中指定的元素。 | |
array_sort(x) | 对数组元素进行升序排序。如果有 null 元素,则 null 元素排在最后。 | |
array_union(x, y) | 计算两个数组的并集。 | |
cardinality(x) | 计算数组中元素的个数。 | |
concat(x, y...) | 将多个数组拼接为一个数组。 | |
contains(x, element) | 判断数组中是否包含指定元素。如果包含,则返回 true。 | |
element_at(x, y) | 返回数组中的第 y 个元素。 | |
filter(x, lambda_expression) | 结合 Lambda 表达式,用于过滤数组中的元素,只返回满足 Lambda 表达式的元素。 | |
flatten(x) | 把将二维数组转换为一维数组。 | |
reduce(x, lambda_expression) | 根据 Lambda 表达式的定义,对数组中的各个元素进行相加计算,然后返回计算结果。 | |
reverse(x) | 对数组中的元素进行反向排列。 | |
sequence(x, y) | 通过指定的起始值返回一个数组,其元素为起始值范围内一组连续且递增的值。递增间隔为默认值1。 | |
| sequence(x, y, step) | 通过指定的起始值返回一个数组,其元素为起始值范围内一组连续且递增的值。自定义递增间隔。 |
shuffle(x) | 对数组元素进行随机排列。 | |
slice(x, start, length) | 获取数组的子集。 | |
transform(x, lambda_expression) | 将 Lambda 表达式应用到数组的每个元素中。 | |
zip(x, y) | 将多个数组合并为一个二维数组,且各个数组中下标相同的元素组成一个新的数组。 | |
zip_with(x, y, lambda_expression) | 根据 Lambda 表达式中的定义将两个数组合并为一个数组。 |
[x]
参数 | 说明 |
x | 数组下标,从1开始。参数值为 bigint 类型。 |
array:[12,23,26,48,26]
* | SELECT cast(json_parse(array) as array(bigint)) [2]
23
array_agg(x)
参数 | 说明 |
x | 参数值为任意数据类型。 |
* | SELECT array_agg(status) AS array
[200,200,200,404,200,200]
array_distinct(x)
参数 | 说明 |
x | 参数值为 array 类型。 |
array:[12,23,26,48,26]
* | SELECT array_distinct(cast(json_parse(array) as array(bigint)))
[12,23,26,48]
array_except(x, y)
参数 | 说明 |
x | 参数值为 array 类型。 |
y | 参数值为 array 类型。 |
* | SELECT array_except(array[1,2,3,4,5],array[1,3,5,7])
[2,4]
array_intersect(x, y)
参数 | 说明 |
x | 参数值为 array 类型。 |
y | 参数值为 array 类型。 |
* | SELECT array_intersect(array[1,2,3,4,5],array[1,3,5,7])
[1,3,5]
array_join(x, delimiter)
array_join(x, delimiter, null_replacement)
参数 | 说明 |
x | 参数值为 array 类型。 |
delimiter | 连接符,可以为字符串。 |
null_replacement | 用于替换 null 元素的字符串。 |
* | SELECT array_join(array[null,'中国','sh'],'/','region')
region/中国/sh
array_max(x)
参数 | 说明 |
x | 参数值为 array 类型。 |
array:[12,23,26,48,26]
* | SELECT array_max(try_cast(json_parse(array) as array(bigint))) AS max_number
48
array_min(x)
参数 | 说明 |
x | 参数值为 array 类型。 |
array:[12,23,26,48,26]
* | SELECT array_min(try_cast(json_parse(array) as array(bigint))) AS min_number
12
array_position(x, element)
参数 | 说明 |
x | 参数值为数组类型。 |
element | 数组中的一个元素。 |
* | SELECT array_position(array[23,46,35],46)
2
array_remove(x, element)
参数 | 说明 |
x | 参数值为数组类型。 |
element | 数组中的一个元素。 |
* | SELECT array_remove(array[23,46,35],23)
[46,35]
array_sort(x)
参数 | 说明 |
x | 参数值为 array 类型。 |
* | SELECT array_sort(array['b','d',null,'c','a'])
["a","b","c","d",null]
array_union(x, y)
参数 | 说明 |
x | 参数值为 array 类型。 |
y | 参数值为 array 类型。 |
* | SELECT array_union(array[1,2,3,4,5],array[1,3,5,7])
[1,2,3,4,5,7]
cardinality(x)
参数 | 说明 |
x | 参数值为 array 类型。 |
array:[12,23,26,48,26]
* | SELECT cardinality(cast(json_parse(array) as array(bigint)))
5
concat(x, y...)
参数 | 说明 |
x | 参数值为 array 类型。 |
y | 参数值为 array 类型。 |
* | SELECT concat(array['red','blue'],array['yellow','green'])
["red","blue","yellow","green"]
contains(x, element)
参数 | 说明 |
x | 参数值为数组类型。 |
element | 数组中的一个元素。 |
array:[12,23,26,48,26]
* | SELECT contains(cast(json_parse(array) as array(varchar)),'23')
TRUE
element_at(x, y)
参数 | 说明 |
x | 参数值为 array 类型。 |
element | 数组下标,从1开始。参数值为 bigint 类型。 |
array:[12,23,26,48,26]
* | SELECT element_at(cast(json_parse(number) AS array(varchar)), 2)
23
filter(x, lambda_expression)
参数 | 说明 |
x | 参数值为 array 类型。 |
lambda_expression |
x -> x > 0
为 Lambda 表达式。* | SELECT filter(array[5,-6,null,7],x -> x > 0)
[5,7]
flatten(x)
参数 | 说明 |
x | 参数值为 array 类型。 |
* | SELECT flatten(array[array[1,2,3,4],array[4,3,2,1]])
[1,2,3,4,4,3,2,1]
reduce(x, lambda_expression)
参数 | 说明 |
x | 参数值为 array 类型。 |
lambda_expression |
* | SELECT reduce(array[5,20,50],0,(s, x) -> s + x, s -> s)
75
reverse(x)
参数 | 说明 |
x | 参数值为 array 类型。 |
* | SELECT reverse(array[1,2,3,4,5])
[5,4,3,2,1]
sequence(x, y)
sequence(x, y, step)
参数 | 说明 |
x | 参数值为 bigint 类型、timestamp 类型(Unix 时间戳、日期和时间表达式)。 |
y | 参数值为 bigint 类型、timestamp 类型(Unix 时间戳、日期和时间表达式)。 |
step | 数值间隔。当参数值为日期和时间表达式时,step 格式如下: interval 'n' year to month,表示间隔为 n 年。 interval 'n' day to second,表示间隔为 n 天。 |
* | SELECT sequence(0,10,2)
[0,2,4,6,8,10]
* | SELECT sequence(from_unixtime(1508737026),from_unixtime(1628734085),interval '1' year to month )
["2017-10-23 05:37:06.0","2018-10-23 05:37:06.0","2019-10-23 05:37:06.0","2020-10-23 05:37:06.0"]
* | SELECT sequence(1628733298,1628734085,60)
[1628733298,1628733358,1628733418,1628733478,1628733538,1628733598,1628733658,1628733718,1628733778,1628733838,1628733898,1628733958,1628734018,1628734078]
shuffle(x)
参数 | 说明 |
x | 参数值为 array 类型。 |
* | SELECT shuffle(array[1,2,3,4,5])
[5,2,4,1,3]
slice(x, start, length)
参数 | 说明 |
x | 参数值为 array 类型。 |
start | 指定索引开始的位置。 如果 start 为负数,则从末尾开始。 如果 start 为正数,则从头部开始。 |
length | 指定子集中元素的个数。 |
* | SELECT slice(array[1,2,4,5,6,7,7],3,2)
[4,5]
transform(x, lambda_expression)
参数 | 说明 |
x | 参数值为 array 类型。 |
lambda_expression |
* | SELECT transform(array[5,6],x -> x + 1)
[6,7]
zip(x, y)
参数 | 说明 |
x | 参数值为 array 类型。 |
y | 参数值为 array 类型。 |
* | SELECT zip(array[1,2], array[3,4])
["{1, 3}","{2, 4}"]
zip_with(x, y, lambda_expression)
参数 | 说明 |
x | 参数值为 array 类型。 |
y | 参数值为 array 类型。 |
lambda_expression |
(x, y) -> x + y
使数组[1,2]和[3,4]中的元素分别相加后,以数组类型返回相加的结果。* | SELECT zip_with(array[1,2], array[3,4],(x,y) -> x + y)
[4,6]
本页内容是否解决了您的问题?