- カテゴリ:
半構造化データ関数 (抽出)
GET¶
ARRAY または OBJECT (または、 ARRAY か OBJECT を含む VARIANT)から値を抽出します。
引数のいずれかが NULL の場合、関数は NULL を返します。
この関数を GET DML コマンドと混同しないでください。
- こちらもご参照ください。
構文¶
ARRAY (または ARRAY を含む VARIANT)
GET( <array> , <index> )
GET( <variant> , <index> )
OBJECT (または OBJECT を含む VARIANT)
GET( <object> , <field_name> )
GET( <variant> , <field_name> )
引数¶
object
キーと値のペアを含む OBJECT に評価される式。
field_name
VARCHAR に評価される式。これは、値を取得するキーと値のペアにあるキーを指定します。
OBJECT に指定されたキーが含まれていない場合、この関数は NULL を返します。
field_name
は空の文字列であってはなりません。array
ARRAY に評価される式。
index
INTEGER に評価される式。これは、 ARRAY から取得する要素の位置を指定します。位置は1ベースではなく、0ベースです。
インデックスが配列の境界の外側を指す場合、またはインデックス付き要素が存在しない場合(疎配列内)であれば、この関数は NULL を返します。
variant
ARRAY または OBJECT のいずれかを含む VARIANT に評価される式。
戻り値¶
戻り値のデータ型は VARIANT です。
戻り値は、 ARRAY の指定された要素、または OBJECT にあるキーと値のペアの指定されたキーに対応する値です。次の理由により、データ型は VARIANT です。
ARRAY では、各要素の型が VARIANT のため。
OBJECT では、各キーと値のペアにある値が型 VARIANT のため。
使用上の注意¶
GET は、
field_name
に大文字と小文字を区別するマッチングを適用します。大文字と小文字を区別しないマッチングでは、 GET_IGNORE_CASE を使用します。最初のパラメーターの型が VARIANT の場合、
2番目のパラメーターの型が VARCHAR のときに(例:
field_name
)、variant
に OBJECT が含まれていなければ、関数は NULL を返します。2番目のパラメーターの型が 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)) ;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 の例と使用上の注意のセクションをご参照ください。