找出在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資料)的處理函數請參見複雜類型函數。