例
次の例は、入力 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 |
| ] |
+----------------------------------+