カテゴリ:

半構造化データ関数 (抽出)

GET

ARRAY または OBJECT (または、 ARRAY か OBJECT を含む VARIANT)から値を抽出します。

引数のいずれかが NULL の場合、関数は NULL を返します。

この関数を GET DML コマンドと混同しないでください。

こちらもご参照ください。

GET_IGNORE_CASEGET_PATH、 :

構文

ARRAY (または ARRAY を含む VARIANT)

GET( <array> , <index> )

GET( <variant> , <index> )

OBJECT (または OBJECT を含む VARIANT)

GET( <object> , <field_name> )

GET( <variant> , <field_name> )

引数

オブジェクト

キーと値のペアを含む OBJECT に評価される式。

フィールド名

VARCHAR に評価される式。これは、値を取得するキーと値のペアにあるキーを指定します。

OBJECT に指定されたキーが含まれていない場合、この関数は NULL を返します。

フィールド名 は空の文字列であってはなりません。

配列

ARRAY に評価される式。

インデックス

INTEGER に評価される式。これは、 ARRAY から取得する要素の位置を指定します。位置は1ベースではなく、0ベースです。

インデックスが配列の境界の外側を指す場合、またはインデックス付き要素が存在しない場合(疎配列内)であれば、この関数は NULL を返します。

バリアント

ARRAY または OBJECT のいずれかを含む VARIANT に評価される式。

戻り値

戻り値のデータ型は VARIANT です。

戻り値は、 ARRAY の指定された要素、または OBJECT にあるキーと値のペアの指定されたキーに対応する値です。次の理由により、データ型は VARIANT です。

  • ARRAY では、各要素の型が VARIANT のため。

  • OBJECT では、各キーと値のペアにある値が型 VARIANT のため。

使用上の注意

  • GET は、 フィールド名 に大文字と小文字を区別するマッチングを適用します。大文字と小文字を区別しないマッチングでは、 GET_IGNORE_CASE を使用します。

  • 最初のパラメーターの型が VARIANT の場合、

    • 2番目のパラメーターの型が VARCHAR のときに(例: フィールド名)、 バリアント に OBJECT が含まれていなければ、関数は NULL を返します。

    • 2番目のパラメーターの型が INTEGER のときに(例: インデックス)、 バリアント に 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))
    ;
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                        |
|         |                      | }                                               |
+---------+----------------------+-------------------------------------------------+

ARRAY の最初の要素を抽出します。

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

国の名前を指定して、国名と首都を含む OBJECT からその国の首都の名前を抽出します。

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

OBJECT を含む VARIANT から気温を抽出します。

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

より詳細な例については、 半構造化データのクエリ をご参照ください。

XMLGET で GET を使用する例については、 XMLGET の例と使用上の注意のセクションをご参照ください。

最上部に戻る