数组函数和运算符
脚标运算符:[]
[]
用于访问一个数组的元素,并从1开始索引:
SELECT my_array [ 1 ] AS first_element
连接运算符:||
||
用来连接相同类型的数组或者元素:
SELECT ARRAY [ 1 ] || ARRAY [ 2 ]; - [1,2]
SELECT ARRAY [ 1 ] || 2 ; - [1,2]
SELECT 2 || ARRAY [ 1 ]; - [2,1]
数组函数
-
array_distinct
(x ) →数组从数组中删除重复的值
x
。 -
array_intersect
(x,y ) →数组返回
x
和y
的交集中的不重复元素。 -
array_union
(x,y ) →数组返回
x
和y
的并集中的不重复元素。 -
array_except
(x,y ) →数组返回属于
x
但不属于y
的不重复元素。(差集) -
array_join
(x,delimiter,null_replacement ) →varchar使用
delimiter
界定符连接x
给定数组的元素并且用null_replacement
可选字符串来填充数组里面的空值。 -
array_max
(x ) →x返回输入数组的最大值。
-
array_min
(x ) →x返回输入数组的最小值。
-
array_position
(x,element) →bigint返回数组
x
中第一次出现元素element
的位置(数字)(如果未找到,则返回0)。 -
array_remove
(x,元素) →数组删除数组
x
中和element
相同的所有元素。 -
array_sort
(x ) →数组排序
x
并返回数组。x
的元素必须是可排序的。空元素将放置在返回数组的末尾。 -
array_sort
(array(T),function(T,T,int)) - > array(T )array
根据给定的比较函数function
排序并返回。比较函数采用两个可空的参数来表示array
两个可以为空的元素。当第一个可空元素小于,等于或大于第二个可空元素时,它返回-1,0或1。如果比较函数返回其他值(包括NULL
),则查询将失败并引发错误
SELECT array_sort(ARRAY [3, 2, 5, 1, 2], (x, y) -> IF(x < y, 1, IF(x = y, 0, -1))); -- [5, 3, 2, 2, 1]
SELECT array_sort(ARRAY ['bc', 'ab', 'dc'], (x, y) -> IF(x < y, 1, IF(x = y, 0, -1))); -- ['dc', 'bc', 'ab']
SELECT array_sort(ARRAY [3, 2, null, 5, null, 1, 2], -- sort null first with descending order
(x, y) -> CASE WHEN x IS NULL THEN -1
WHEN y IS NULL THEN<