- カテゴリ:
半構造化データ関数と構造化データ関数 (配列/オブジェクト)
ARRAY_SORT¶
入力 ARRAY の要素を含む ARRAY を昇順または降順に並べ替えて返します。NULL 要素を NULL 以外の要素の前後で並べ替えるかどうかを指定できます。
構文¶
ARRAY_SORT( <array> [ , <sort_ascending> [ , <nulls_first> ] ] )
引数¶
必須
array
並べ替える要素の ARRAY。
オプション
sort_ascending
要素を昇順で並べるか降順で並べるかを指定します。
TRUE を指定すると、要素を昇順に並べ替えます。
FALSE を指定すると、要素を降順に並べ替えます。
デフォルト: TRUE
nulls_first
SQL NULL 要素を、並べ替えられた ARRAY の先頭に置くか、最後に置くかを指定します。
SQL NULL の要素を ARRAY の先頭に配置するには TRUE を指定します。
SQL NULL の要素を ARRAY の最後に配置するには FALSE を指定します。
デフォルト: ARRAY が昇順で並べ替えられている場合は FALSE、 ARRAY が降順で並べ替えられている場合は TRUE。
この引数は SQL NULL の要素の順番にのみ影響します。これは、 JSON nul 要素の順序に影響しません。
戻り値¶
この関数は、 array
の要素を並べ替え順に含む ARRAY を返します。
使用上の注意¶
例¶
次の例は、入力 ARRAY 定数 からの要素を昇順に並べ替えて数値の ARRAY を返します。要素には JSON NULL (PARSE_JSON('null')) と SQL NULL があります。
並べ替えられた ARRAY では、 JSON NULLs (null
)と SQL NULLs (undefined
)が最後の要素であることに注意してください。
SELECT ARRAY_SORT([20, PARSE_JSON('null'), 0, NULL, 10]);
+---------------------------------------------------+
| ARRAY_SORT([20, PARSE_JSON('NULL'), 0, NULL, 10]) |
|---------------------------------------------------|
| [ |
| 0, |
| 10, |
| 20, |
| null, |
| undefined |
| ] |
+---------------------------------------------------+
次の例は、要素を降順に並べ替えて数値の ARRAY を返します。並べ替えられた ARRAY では、 JSON NULLs (null
)と SQL NULLs (undefined
)が最初の要素であることに注意してください。
SELECT ARRAY_SORT([20, PARSE_JSON('null'), 0, NULL, 10], FALSE);
+----------------------------------------------------------+
| ARRAY_SORT([20, PARSE_JSON('NULL'), 0, NULL, 10], FALSE) |
|----------------------------------------------------------|
| [ |
| undefined, |
| null, |
| 20, |
| 10, |
| 0 |
| ] |
+----------------------------------------------------------+
次の例では、要素を昇順に並べ替えています。この例では、 SQL NULLs (undefined
)を並べ替えられた ARRAY の最初に配置するために、 nulls_first
引数を TRUE に設定しています。(デフォルトでは、 SQL NULLs は昇順で並べ替えられた ARRAY の最後に配置されます。)
nulls_first
は JSON NULLs (null
)の配置には影響しないことに注意してください。
SELECT ARRAY_SORT([20, PARSE_JSON('null'), 0, NULL, 10], TRUE, TRUE);
+---------------------------------------------------------------+
| ARRAY_SORT([20, PARSE_JSON('NULL'), 0, NULL, 10], TRUE, TRUE) |
|---------------------------------------------------------------|
| [ |
| undefined, |
| 0, |
| 10, |
| 20, |
| null |
| ] |
+---------------------------------------------------------------+
次の例では、要素を降順に並べ替えています。この例では、 SQL NULLs (undefined
)を並べ替えられた ARRAY の最後に配置するために、 nulls_first
引数を FALSE に設定しています。(デフォルトでは、 SQL NULLs は降順で並べ替えられた ARRAY の最初に配置されます。)
nulls_first
は JSON NULLs (null
)の配置には影響しないことに注意してください。
SELECT ARRAY_SORT([20, PARSE_JSON('null'), 0, NULL, 10], FALSE, FALSE);
+-----------------------------------------------------------------+
| ARRAY_SORT([20, PARSE_JSON('NULL'), 0, NULL, 10], FALSE, FALSE) |
|-----------------------------------------------------------------|
| [ |
| null, |
| 20, |
| 10, |
| 0, |
| undefined |
| ] |
+-----------------------------------------------------------------+
以下の例では、 ARRAY_INSERT 関数を使用して、スパースに入力された ARRAY を構築しています。(この例では、 ARRAY の特定の位置に 1
と 2
という値を挿入しています。)この例では、 ARRAY_SORT 関数を使用して、この ARRAY を並べ替えています。
SELECT ARRAY_INSERT(ARRAY_INSERT(ARRAY_CONSTRUCT(), 3, 2), 6, 1) arr, ARRAY_SORT(arr);
+--------------+-----------------+
| ARR | ARRAY_SORT(ARR) |
|--------------+-----------------|
| [ | [ |
| undefined, | 1, |
| undefined, | 2, |
| undefined, | undefined, |
| 2, | undefined, |
| undefined, | undefined, |
| undefined, | undefined, |
| 1 | undefined |
| ] | ] |
+--------------+-----------------+
次の例は、 ARRAY で異なる数値型を使用して並べ替えると、並べ替えが不安定になることを示しています。この例では、 NUMBER 値と REAL 値を含む ARRAY を使用しています。
SELECT ARRAY_SORT([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1e0::REAL]) AS array_of_different_numeric_types;
+----------------------------------+
| ARRAY_OF_DIFFERENT_NUMERIC_TYPES |
|----------------------------------|
| [ |
| 1, |
| 1.000000000000000e+00, |
| 1, |
| 1, |
| 1, |
| 1, |
| 1, |
| 1, |
| 1, |
| 1, |
| 1, |
| 1, |
| 1, |
| 1, |
| 1, |
| 1, |
| 1 |
| ] |
+----------------------------------+