카테고리:

반정형 및 정형 데이터 함수 (추출)

GET

ARRAY 또는 OBJECT (또는 ARRAY 또는 OBJECT를 포함하는 VARIANT)에서 값을 추출합니다.

인자 중 하나가 NULL이면 NULL을 반환합니다.

이 함수를 GET DML 명령과 혼동해서는 안 됩니다.

참고 항목:

GET_IGNORE_CASE , GET_PATH , :

구문

ARRAY (또는 ARRAY를 포함하는 VARIANT)

GET( <array> , <index> )

GET( <variant> , <index> )
Copy

OBJECT (또는 OBJECT를 포함하는 VARIANT)

GET( <object> , <field_name> )

GET( <variant> , <field_name> )
Copy

MAP

GET( <map> , <key> )
Copy

인자

array

ARRAY 로 평가되는 식입니다.

index

INTEGER로 평가되는 식입니다. ARRAY에서 검색할 요소의 위치를 지정합니다. 위치는 1이 아니라 0부터 시작합니다.

인덱스가 배열 경계 외부를 가리키거나 인덱스 요소가 존재하지 않는 경우(스파스 배열의 경우):

  • array 가 반정형 ARRAY인 경우 이 함수는 NULL을 반환합니다.

  • array 가 정형 ARRAY인 경우 오류가 발생합니다.

variant

ARRAY 또는 OBJECT가 포함된 VARIANT 로 평가되는 식입니다.

object

키-값 페어를 포함하는 OBJECT 로 평가되는 식입니다.

field_name

VARCHAR로 평가되는 식입니다. 값을 검색할 키-값 페어의 키를 지정합니다.

field_name 은 빈 문자열이 아니어야 합니다.

object정형 OBJECT 인 경우 field_name 에 대한 상수를 지정해야 합니다.

object 에 지정된 키가 포함되지 않은 경우:

  • object 가 반정형 OBJECT인 경우 함수는 NULL을 반환합니다.

  • object 가 정형 OBJECT인 경우 오류가 발생합니다.

map

MAP 으로 평가되는 식입니다.

key

값을 검색할 키-값 페어의 키입니다.

map 에 지정된 키가 없으면 함수는 NULL을 반환합니다.

반환

  • 반환된 값은 ARRAY의 지정된 요소 또는 OBJECT의 키-값 페어에 지정된 키에 해당하는 값입니다.

  • 입력 오브젝트가 반정형 OBJECT, ARRAY 또는 VARIANT인 경우 함수는 VARIANT를 반환합니다. 데이터 타입은 VARIANT입니다. 왜냐하면,

    • ARRAY에서 각 요소가 VARIANT 타입입니다.

    • OBJECT에서 각 키-값 페어의 값이 VARIANT 타입니다.

  • 입력 오브젝트가 정형 OBJECT, 정형 ARRAY 또는 MAP 인 경우 함수는 오브젝트에 대해 지정된 유형의 값을 반환합니다.

    예를 들어 입력 오브젝트의 유형이 ARRAY(NUMBER)인 경우 함수는 NUMBER를 반환합니다.

사용법 노트

  • GET은 field_name 에 대/소문자 구분 일치를 적용합니다. 대/소문자를 구분하지 않는 일치의 경우, GET_IGNORE_CASE 를 사용하십시오.

  • 첫 번째 매개 변수의 타입이 VARIANT인 경우:

    • 두 번째 매개 변수가 VARCHAR 타입(예: field_name)인 경우 variant 에 OBJECT가 포함되어 있지 않으면 함수는 NULL을 반환합니다.

    • 두 번째 매개 변수가 INTEGER 타입(예: index)인 경우 variant 에 ARRAY가 포함되어 있지 않으면 함수는 NULL을 반환합니다.

간단한 데이터로 테이블 만들기:

CREATE TABLE vartab (a ARRAY, o OBJECT, v VARIANT);
INSERT INTO vartab (a, o, v) 
  SELECT
    ARRAY_CONSTRUCT(2.71, 3.14),
    OBJECT_CONSTRUCT('Ukraine', 'Kyiv'::VARIANT, 
                     'France',  'Paris'::VARIANT),
    TO_VARIANT(OBJECT_CONSTRUCT('weatherStationID', 42::VARIANT,
                     'timestamp', '2022-03-07 14:00'::TIMESTAMP_LTZ::VARIANT,
                     'temperature', 31.5::VARIANT,
                     'sensorType', 'indoor'::VARIANT))
    ;
Copy
SELECT a, o, v FROM vartab;
+---------+----------------------+-------------------------------------------------+
| A       | O                    | V                                               |
|---------+----------------------+-------------------------------------------------|
| [       | {                    | {                                               |
|   2.71, |   "France": "Paris", |   "sensorType": "indoor",                       |
|   3.14  |   "Ukraine": "Kyiv"  |   "temperature": 31.5,                          |
| ]       | }                    |   "timestamp": "2022-03-07 14:00:00.000 -0800", |
|         |                      |   "weatherStationID": 42                        |
|         |                      | }                                               |
+---------+----------------------+-------------------------------------------------+
Copy

ARRAY의 첫 번째 요소 추출하기:

SELECT GET(a, 0) FROM vartab;
+-----------+
| GET(A, 0) |
|-----------|
| 2.71      |
+-----------+
Copy

국가 이름이 주어진 경우, 국가 이름과 수도가 포함된 OBJECT에서 해당 국가의 수도 이름 추출:

SELECT GET(o, 'Ukraine') FROM vartab;
+-------------------+
| GET(O, 'UKRAINE') |
|-------------------|
| "Kyiv"            |
+-------------------+
Copy

OBJECT를 포함하는 VARIANT에서 온도 추출:

SELECT GET(v, 'temperature') FROM vartab;
+-----------------------+
| GET(V, 'TEMPERATURE') |
|-----------------------|
| 31.5                  |
+-----------------------+
Copy

자세한 예는 반정형 데이터 쿼리하기 를 참조하십시오.

GET을 XMLGET과 함께 사용하는 예는 XMLGET 의 예 및 사용법 노트 섹션을 참조하십시오.