- カテゴリ:
半構造化データ関数と構造化データ関数 (配列/オブジェクト)
ARRAY_DISTINCT¶
入力 ARRAY とは異なる要素のみを含む新しい ARRAY を返します。この関数は、入力 ARRAY に存在する重複要素を除外します。
この関数が ARRAY 内の要素を特定の順序で返すことは保証されていません。
この関数は NULL に対して安全です。つまり、重複要素を識別するときに NULLs を既知の値として扱います。
構文¶
ARRAY_DISTINCT( <array> )
引数¶
array
削除する要素が重複している可能性がある配列。
戻り値¶
この関数は、重複要素のない、一致する入力配列の要素を含む ARRAY を返します。たとえば、値 'x'
が入力 ARRAY に複数回出現する場合、返される ARRAY で値 'x'
を持つ要素は1つだけです。
入力引数が NULL の場合、関数は NULL を返します。
返される配列内の値の順序は指定されていません。
使用上の注意¶
例¶
次の例は、関数が入力 ARRAY 定数 から要素 A
と NULL
を重複せずに ARRAY を返す方法を示しています。
SELECT ARRAY_DISTINCT(['A', 'A', 'B', NULL, NULL]);
+---------------------------------------------+
| ARRAY_DISTINCT(['A', 'A', 'B', NULL, NULL]) |
|---------------------------------------------|
| [ |
| "A", |
| "B", |
| undefined |
| ] |
+---------------------------------------------+
次の例は、 NULL (ARRAY ではなく)を渡すと NULL が返される方法を示しています。
SELECT ARRAY_DISTINCT(NULL);
+----------------------+
| ARRAY_DISTINCT(NULL) |
|----------------------|
| NULL |
+----------------------+
次の例は、関数が入力 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 |
| } |
| ] |
+----------------------------------------------------------------------------+
例に示すように、 b
の値が異なるため(2
ではなく 3
)、最後の要素は重複とは見なされません。