카테고리:

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

OBJECT_KEYS

입력 오브젝트의 최상위 수준에 있는 키 목록을 포함하는 배열을 반환합니다.

구문

OBJECT_KEYS( <object> )
Copy

인자

object

키를 얻고자 하는 값입니다. 입력 값은 다음 중 하나여야 합니다.

반환

이 함수는 키가 포함된 ARRAY 를 반환합니다.

object정형 OBJECT 인 경우 함수는 ARRAY(VARCHAR)를 반환합니다.

사용법 노트

  • 이 오브젝트가 중첩된 오브젝트(예: 오브젝트 내의 오브젝트)를 포함하는 경우에는 최상위 수준의 키만 반환합니다.

기본 예

다음 예는 OBJECT 형식의 값을 포함하는 OBJECTVARIANT 모두와 함께 작동하는 OBJECT_KEYS를 보여줍니다.

OBJECTVARIANT 형식의 열이 포함된 테이블을 만듭니다.

CREATE TABLE objects_1 (id INTEGER, object1 OBJECT, variant1 VARIANT);
Copy

INSERT로 값을 삽입합니다.

INSERT INTO objects_1 (id, object1, variant1) 
  SELECT
    1,
    OBJECT_CONSTRUCT('a', 1, 'b', 2, 'c', 3),
    TO_VARIANT(OBJECT_CONSTRUCT('a', 1, 'b', 2, 'c', 3))
    ;
Copy

OBJECT와 VARIANT 모두에서 키를 검색합니다.

SELECT OBJECT_KEYS(object1), OBJECT_KEYS(variant1) 
    FROM objects_1
    ORDER BY id;
+----------------------+-----------------------+
| OBJECT_KEYS(OBJECT1) | OBJECT_KEYS(VARIANT1) |
|----------------------+-----------------------|
| [                    | [                     |
|   "a",               |   "a",                |
|   "b",               |   "b",                |
|   "c"                |   "c"                 |
| ]                    | ]                     |
+----------------------+-----------------------+
Copy

중첩된 오브젝트의 예

이 예에서는 오브젝트에 중첩된 오브젝트가 포함된 경우 최상위 수준의 키만 반환됨을 보여줍니다.

SELECT OBJECT_KEYS (
           PARSE_JSON (
               '{
                    "level_1_A": {
                                 "level_2": "two"
                                 },
                    "level_1_B": "one"
                    }'
               )
           ) AS keys
    ORDER BY 1;
+----------------+
| KEYS           |
|----------------|
| [              |
|   "level_1_A", |
|   "level_1_B"  |
| ]              |
+----------------+
Copy