- カテゴリ:
半構造化データ関数と構造化データ関数 (配列/オブジェクト)
OBJECT_KEYS¶
入力オブジェクトの最上位レベルにあるキーのリストを含む配列を返します。
構文¶
OBJECT_KEYS( <object> )
引数¶
戻り値¶
この関数は、キーを含む ARRAY を返します。
object
が 構造化 OBJECT の場合、この関数は ARRAY(VARCHAR) を返します。
使用上の注意¶
オブジェクトにネストされたオブジェクト(例: オブジェクト内のオブジェクト)が含まれている場合、最上位レベルのキーのみが返されます。
例¶
基本的な例¶
次の例は、 OBJECT 型の値を含んだ OBJECT と VARIANT の両方を処理する OBJECT_KEYS を示しています。
OBJECT 型および VARIANT 型の列を含むテーブルを作成します。
CREATE TABLE objects_1 (id INTEGER, object1 OBJECT, variant1 VARIANT);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)) ;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" | | ] | ] | +----------------------+-----------------------+
ネストされたオブジェクトの例¶
この例は、オブジェクトにネストされたオブジェクトが含まれている場合、最上位レベルのキーのみが返されることを示しています。
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" | | ] | +----------------+