카테고리:

반정형 및 정형 데이터 함수 (배열/오브젝트)

ARRAY_SORT

오름차순 또는 내림차순으로 정렬된 입력 ARRAY 의 요소를 포함한 ARRAY를 반환합니다. NULL 요소를 NULL이 아닌 요소의 앞이나 뒤에 정렬할지 여부를 지정할 수 있습니다.

구문

ARRAY_SORT( <array> [ , <sort_ascending> [ , <nulls_first> ] ] )
Copy

인자

필수 사항

array

정렬할 요소의 ARRAY입니다.

선택 사항

sort_ascending

다음과 같이 요소를 오름차순으로 정렬할지, 내림차순으로 정렬할지 지정합니다.

  • 요소를 오름차순으로 정렬하려면 TRUE를 지정하십시오.

  • 요소를 내림차순으로 정렬하려면 FALSE를 지정하십시오.

기본값: TRUE

nulls_first

다음과 같이 정렬된 ARRAY의 시작 또는 끝에 SQL NULL 요소를 배치할지 여부를 지정합니다.

  • ARRAY에 SQL NULL 요소를 먼저 배치하려면 TRUE을 지정하십시오.

  • ARRAY의 마지막에 SQL NULL 요소를 배치하려면 FALSE을 지정하십시오.

기본값: ARRAY가 오름차순으로 정렬된 경우는 FALSE이고 ARRAY가 내림차순으로 정렬된 경우는 TRUE입니다.

이 인자는 SQL NULL 요소의 순서에만 영향을 미칩니다. 이는 JSON null 요소의 순서에 영향을 주지 않습니다.

반환

이 함수는 정렬된 순서로 array 의 요소를 포함하는 ARRAY를 반환합니다.

사용법 노트

  • 정렬 순서는 ARRAY를 평면화 하고 해당 ASC | DESC and NULLS FIRST | LAST 매개 변수로 ORDER BY 절을 지정하여 얻은 순서와 동일합니다.

  • 입력 인자 중 하나라도 NULL이면 이 함수는 NULL을 반환합니다.

  • ARRAY에 다음 중 하나가 포함된 경우 이 함수는 안정적인 정렬을 제공하는 것으로 보장되지 않습니다.

    • 두 가지 다른 숫자 또는 타임스탬프 유형의 요소.

    • 두 가지 다른 숫자 또는 타임스탬프 유형을 포함하는 오브젝트.

다음 예에서는 오름차순으로 정렬된 입력 ARRAY 상수 의 요소가 포함된 숫자로 구성된 ARRAY를 반환합니다. 요소에는 JSON NULL(PARSE_JSON(〈null〉)) 및 SQL NULL이 포함됩니다.

정렬된 ARRAY에서는 JSON NULL(null) 및 SQL NULL(undefined)이 마지막 요소입니다.

SELECT ARRAY_SORT([20, PARSE_JSON('null'), 0, NULL, 10]);
Copy
+---------------------------------------------------+
| ARRAY_SORT([20, PARSE_JSON('NULL'), 0, NULL, 10]) |
|---------------------------------------------------|
| [                                                 |
|   0,                                              |
|   10,                                             |
|   20,                                             |
|   null,                                           |
|   undefined                                       |
| ]                                                 |
+---------------------------------------------------+

다음 예에서는 요소가 내림차순으로 정렬된 숫자로 구성된 ARRAY를 반환합니다. 정렬된 ARRAY에서는 JSON NULL(null) 및 SQL NULL(undefined)이 첫 번째 요소입니다.

SELECT ARRAY_SORT([20, PARSE_JSON('null'), 0, NULL, 10], FALSE);
Copy
+----------------------------------------------------------+
| ARRAY_SORT([20, PARSE_JSON('NULL'), 0, NULL, 10], FALSE) |
|----------------------------------------------------------|
| [                                                        |
|   undefined,                                             |
|   null,                                                  |
|   20,                                                    |
|   10,                                                    |
|   0                                                      |
| ]                                                        |
+----------------------------------------------------------+

다음 예에서는 요소를 오름차순으로 정렬합니다. 이 예에서는 nulls_first 인자를 TRUE로 설정하여 정렬된 ARRAY에서 SQL NULL(undefined)을 먼저 배치합니다. (기본적으로 SQL NULL은 오름차순으로 정렬된 ARRAY의 끝에 배치됩니다.)

nulls_first 는 JSON NULL(null)의 배치에 영향을 주지 않습니다.

SELECT ARRAY_SORT([20, PARSE_JSON('null'), 0, NULL, 10], TRUE, TRUE);
Copy
+---------------------------------------------------------------+
| ARRAY_SORT([20, PARSE_JSON('NULL'), 0, NULL, 10], TRUE, TRUE) |
|---------------------------------------------------------------|
| [                                                             |
|   undefined,                                                  |
|   0,                                                          |
|   10,                                                         |
|   20,                                                         |
|   null                                                        |
| ]                                                             |
+---------------------------------------------------------------+

다음 예에서는 요소를 내림차순으로 정렬합니다. 이 예에서는 nulls_first 인자를 FALSE로 설정하여 정렬된 ARRAY에서 SQL NULL(undefined)을 마지막으로 배치합니다. (기본적으로 SQL NULL은 내림차순으로 정렬된 ARRAY의 시작 부분에 배치됩니다.)

nulls_first 는 JSON NULL(null)의 배치에 영향을 주지 않습니다.

SELECT ARRAY_SORT([20, PARSE_JSON('null'), 0, NULL, 10], FALSE, FALSE);
Copy
+-----------------------------------------------------------------+
| ARRAY_SORT([20, PARSE_JSON('NULL'), 0, NULL, 10], FALSE, FALSE) |
|-----------------------------------------------------------------|
| [                                                               |
|   null,                                                         |
|   20,                                                           |
|   10,                                                           |
|   0,                                                            |
|   undefined                                                     |
| ]                                                               |
+-----------------------------------------------------------------+

다음 예에서는 ARRAY_INSERT 함수를 사용하여 희소하게 채워진 ARRAY를 생성합니다. (이 예에서는 ARRAY의 특정 위치에 값 12 를 삽입합니다.) 그런 다음 ARRAY_SORT 함수를 사용하여 이 ARRAY를 정렬합니다.

SELECT ARRAY_INSERT(ARRAY_INSERT(ARRAY_CONSTRUCT(), 3, 2), 6, 1) arr, ARRAY_SORT(arr);
Copy
+--------------+-----------------+
| 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;
Copy
+----------------------------------+
| ARRAY_OF_DIFFERENT_NUMERIC_TYPES |
|----------------------------------|
| [                                |
|   1,                             |
|   1.000000000000000e+00,         |
|   1,                             |
|   1,                             |
|   1,                             |
|   1,                             |
|   1,                             |
|   1,                             |
|   1,                             |
|   1,                             |
|   1,                             |
|   1,                             |
|   1,                             |
|   1,                             |
|   1,                             |
|   1,                             |
|   1                              |
| ]                                |
+----------------------------------+