カテゴリ:

半構造化データ関数と構造化データ関数 (配列/オブジェクト)

ARRAY_DISTINCT

入力 ARRAY とは異なる要素のみを含む新しい ARRAY を返します。この関数は、入力 ARRAY に存在する重複要素を除外します。

この関数が ARRAY 内の要素を特定の順序で返すことは保証されていません。

この関数は NULL に対して安全です。つまり、重複要素を識別するときに NULLs を既知の値として扱います。

構文

ARRAY_DISTINCT( <array> )
Copy

引数

array

削除する要素が重複している可能性がある配列。

戻り値

この関数は、重複要素のない、一致する入力配列の要素を含む ARRAY を返します。たとえば、値 'x' が入力 ARRAY に複数回出現する場合、返される ARRAY で値 'x' を持つ要素は1つだけです。

入力引数が NULL の場合、関数は NULL を返します。

返される配列内の値の順序は指定されていません。

使用上の注意

  • タイプ OBJECT の要素の場合、重複していると見なされるには、オブジェクトが同一である必要があります。詳細については、 (このトピック内)をご参照ください。

  • 重複要素を識別する場合、関数は NULL を既知の値と見なします(つまり、 NULL は、 NULL を除き、他の値Xの重複ではありません)。

次の例は、関数が入力 ARRAY 定数 から要素 ANULL を重複せずに ARRAY を返す方法を示しています。

SELECT ARRAY_DISTINCT(['A', 'A', 'B', NULL, NULL]);

+---------------------------------------------+
| ARRAY_DISTINCT(['A', 'A', 'B', NULL, NULL]) |
|---------------------------------------------|
| [                                           |
|   "A",                                      |
|   "B",                                      |
|   undefined                                 |
| ]                                           |
+---------------------------------------------+
Copy

次の例は、 NULL (ARRAY ではなく)を渡すと NULL が返される方法を示しています。

SELECT ARRAY_DISTINCT(NULL);

+----------------------+
| ARRAY_DISTINCT(NULL) |
|----------------------|
| NULL                 |
+----------------------+
Copy

次の例は、関数が入力 ARRAY の要素である重複する OBJECTs を削除する方法を示しています。この例では、 OBJECT 定数 および ARRAY 定数を使用して OBJECTs および ARRAY を構築しています。

SELECT ARRAY_DISTINCT( [ {'a': 1, 'b': 2}, {'a': 1, 'b': 2}, {'a': 1, 'b': 3} ] );

+----------------------------------------------------------------------------+
| ARRAY_DISTINCT( [ {'A': 1, 'B': 2}, {'A': 1, 'B': 2}, {'A': 1, 'B': 3} ] ) |
|----------------------------------------------------------------------------|
| [                                                                          |
|   {                                                                        |
|     "a": 1,                                                                |
|     "b": 2                                                                 |
|   },                                                                       |
|   {                                                                        |
|     "a": 1,                                                                |
|     "b": 3                                                                 |
|   }                                                                        |
| ]                                                                          |
+----------------------------------------------------------------------------+
Copy

例に示すように、 b の値が異なるため(2 ではなく 3)、最後の要素は重複とは見なされません。