ARRAY_INSERT

ARRAY_INSERT

ARRAY_INSERT() 함수는 소스 배열의 모든 요소와 새 요소를 모두 포함하는 배열을 반환해요.

출처: Snowflake SQL Reference

본문

문법

ARRAY_INSERT( <array> , <pos> , <new_element> )

인자

array — 소스 배열이에요.

pos — 소스 배열의 (0부터 시작하는) 위치예요. 새 요소는 이 위치에 삽입돼요. 이 위치의 원래 요소(있는 경우)와 이후의 모든 요소(있는 경우)는 결과 배열에서 한 위치씩 오른쪽으로 이동해요 (즉, 위치 0에 삽입하는 것은 ARRAY_PREPEND를 사용하는 것과 같은 효과예요). 음수 위치는 배열의 뒤에서부터의 인덱스로 해석돼요 (예: -1은 배열의 마지막 요소 앞에 삽입됨).

new_element — 삽입할 요소예요. 새 요소는 pos 위치에 놓여요. 소스 배열의 다른 요소들의 상대적 순서는 보존돼요.

반환

반환 값의 데이터 타입은 ARRAY예요.

사용 노트

구조화 배열(structured array)을 함수에 전달하면 함수는 같은 타입의 구조화 배열을 반환해요.

  • array가 구조화 ARRAY라면 new_element의 타입은 ARRAY의 타입으로 강제 변환(coercible) 가능해야 해요.
  • pos의 절댓값이 array의 요소 수를 초과하면, 새 요소와 소스 배열 요소 사이에 추가 빈 요소가 삽입돼요.
  • 배열에 요소를 추가(append)하거나 앞에 추가(prepend)하려면 ARRAY_APPEND 또는 ARRAY_PREPEND를 사용하는 게 좋아요.

예제

배열에 삽입하는 간단한 예제예요:

SELECT ARRAY_INSERT(ARRAY_CONSTRUCT(0,1,2,3),2,'hello');
+--------------------------------------------------+
| ARRAY_INSERT(ARRAY_CONSTRUCT(0,1,2,3),2,'HELLO') |
|--------------------------------------------------|
| [                                                |
|   0,                                             |
|   1,                                             |
|   "hello",                                       |
|   2,                                             |
|   3                                              |
| ]                                                |
+--------------------------------------------------+

배열의 기존 요소 수보다 큰 인덱스를 사용한 삽입이에요:

SELECT ARRAY_INSERT(ARRAY_CONSTRUCT(0,1,2,3),5,'hello');
+--------------------------------------------------+
| ARRAY_INSERT(ARRAY_CONSTRUCT(0,1,2,3),5,'HELLO') |
|--------------------------------------------------|
| [                                                |
|   0,                                             |
|   1,                                             |
|   2,                                             |
|   3,                                             |
|   undefined,                                     |
|   "hello"                                        |
| ]                                                |
+--------------------------------------------------+

음수 인덱스를 사용한 삽입이에요:

SELECT ARRAY_INSERT(ARRAY_CONSTRUCT(0,1,2,3),-1,'hello');
+---------------------------------------------------+
| ARRAY_INSERT(ARRAY_CONSTRUCT(0,1,2,3),-1,'HELLO') |
|---------------------------------------------------|
| [                                                 |
|   0,                                              |
|   1,                                              |
|   2,                                              |
|   "hello",                                        |
|   3                                               |
| ]                                                 |
+---------------------------------------------------+

더 알아보기 (Learn more)