全部產品
Search
文件中心

MaxCompute:ARRAY_EXCEPT

更新時間:Jun 19, 2024

找出在ARRAY數組a中,但不在ARRAY數組b中的元素,並去掉重複的元素後,返回新的ARRAY數組。

命令格式

array<T> array_except(array<T> <a>, array<T> <b>)

參數說明

ab:必填。ARRAY數組。array<T>中的T指代ARRAY數組元素的資料類型,數組中的元素可以為任意類型。ab的資料類型必須保持一致。

傳回值說明

返回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資料)的處理函數請參見複雜類型函數