找出在ARRAY数组a中,但不在ARRAY数组b中的元素,并去掉重复的元素后,返回新的ARRAY数组。
命令格式
array<T> array_except(array<T> <a>, array<T> <b>)
参数说明
a、b:必填。ARRAY数组。array<T>
中的T
指代ARRAY数组元素的数据类型,数组中的元素可以为任意类型。a和b的数据类型必须保持一致。
返回值说明
返回ARRAY类型。返回规则如下:
新ARRAY数组无重复元素且元素顺序与a中的元素顺序保持一致。
ARRAY数组中存在元素为NULL时,NULL值会参与运算。
任一输入数组为空时,返回对非空数组去重后的新ARRAY数组。
输入数组全部为空时,返回空数组。
使用示例
示例1:找出在ARRAY数组
array(1, 1, 3, 3, 5, 5)
中,不在ARRAY数组array(1, 1, 2, 2, 3, 3)
中的元素并去重。命令示例如下。--返回[5]。 select array_except(array(1, 1, 3, 3, 5, 5), array(1, 1, 2, 2, 3, 3));
示例2:找出在ARRAY数组
array(1, 1, 3, 3, 5, 5, null, null)
中,不在ARRAY数组array(1, 1, 2, 2, 3, 3)
中的元素并去重。命令示例如下。--返回[5,null]。 select array_except(array(1, 1, 3, 3, 5, 5, null, null), array(1, 1, 2, 2, 3, 3));
示例3:任一输入ARRAY数组为空。命令示例如下。
--返回[2,1]。 select array_except(array(2, 1, 1, 2), cast(array() as array<int>));
示例4:输入ARRAY数组全部为空。命令示例如下。
--返回[]。 select array_except(cast(array() as array<int>), cast(array() as array<int>));
相关函数
ARRAY_EXCEPT函数属于复杂类型函数,更多对复杂类型数据(例如ARRAY、MAP、STRUCT、JSON数据)的处理函数请参见复杂类型函数。