- Categorias:
GET¶
Extrai um valor de um ARRAY ou um OBJECT (ou uma VARIANT que contém um ARRAY ou um OBJECT).
A função retorna NULL se qualquer um dos argumentos for NULL.
Note que esta função não deve ser confundida com o comando GET DML.
- Consulte também:
Sintaxe¶
ARRAY (ou VARIANT contendo um ARRAY)
GET( <array> , <index> )
GET( <variant> , <index> )
OBJECT (ou VARIANT contendo um OBJECT)
GET( <object> , <field_name> )
GET( <variant> , <field_name> )
MAP
GET( <map> , <key> )
Argumentos¶
- array
- Uma expressão que avalia como um ARRAY. 
- index
- Uma expressão que avalia como um INTEGER. Isso especifica a posição do elemento a ser recuperado de ARRAY. A posição é baseada em 0, não em 1. - Se o índice apontar para fora dos limites da matriz, ou se o elemento indexado não existir (em uma matriz esparsa): - Se - arrayfor uma ARRAY semiestruturada, esta função retornará NULL.
- Se - arrayfor uma ARRAY estruturada, ocorrerá um erro.
 
- variant
- Uma expressão que avalia como um VARIANT que contém um ARRAY ou um OBJECT. 
- object
- Uma expressão que avalia como um OBJECT que contém pares chave-valor. 
- field_name
- Uma expressão que avalia como um VARCHAR. Isto especifica a chave em um par chave-valor para o qual você deseja recuperar o valor. - field_namenão pode ser uma cadeia de caracteres vazia.- Se - objectfor um OBJECT estruturado, você deverá especificar uma constante para- field_name.- Se - objectnão contiver a chave especificada:- Se - objectfor um OBJECT semiestruturado, a função retornará NULL.
- Se - objectfor um OBJECT estruturado, ocorrerá um erro.
 
- map
- Uma expressão que avalia como um MAP. 
- key
- A chave em um par chave-valor para o qual você deseja recuperar o valor. - Se - mapnão contiver a chave especificada, a função retornará NULL.
Retornos¶
- O valor retornado é o elemento especificado do ARRAY, ou o valor que corresponde à chave especificada de um par chave-valor no OBJECT. 
- Se o objeto de entrada for um valor semiestruturado OBJECT, ARRAY ou VARIANT, a função retornará um valor VARIANT. O tipo de dados do valor é VARIANT porque: - Em um valor ARRAY, cada elemento é do tipo VARIANT. 
- Em um valor OBJECT, o valor em cada par chave-valor é do tipo VARIANT. 
 
- Se o objeto de entrada for OBJECT estruturado, ARRAY estruturado ou MAP, a função retornará um valor do tipo especificado para o objeto. - Por exemplo, se o tipo do objeto de entrada for ARRAY(NUMBER), a função retornará um valor NUMBER. 
Notas de uso¶
- GET aplica a correspondência que diferencia maiúsculas e minúsculas a - field_name. Para correspondência que não diferencia maiúsculas e minúsculas, utilize GET_IGNORE_CASE.
- Se o primeiro parâmetro for do tipo VARIANT: - Se o segundo parâmetro for do tipo VARCHAR (por exemplo, um - field_name), a função retorna NULL se- variantnão contiver um OBJECT.
- Se o segundo parâmetro for do tipo INTEGER (por exemplo, um - index), a função retorna NULL se- variantnão contiver um ARRAY.
 
Exemplos¶
Criar uma tabela com dados de amostra:
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 | | | | } | +---------+----------------------+-------------------------------------------------+
Extrair o primeiro elemento de um ARRAY:
SELECT GET(a, 0) FROM vartab; +-----------+ | GET(A, 0) | |-----------| | 2.71 | +-----------+
Dado o nome de um país, extrair o nome da capital desse país de um OBJECT contendo os nomes dos países e das capitais:
SELECT GET(o, 'Ukraine') FROM vartab; +-------------------+ | GET(O, 'UKRAINE') | |-------------------| | "Kyiv" | +-------------------+
Extrair a temperatura de um VARIANT que contém um OBJECT:
SELECT GET(v, 'temperature') FROM vartab; +-----------------------+ | GET(V, 'TEMPERATURE') | |-----------------------| | 31.5 | +-----------------------+
Para exemplos mais detalhados, consulte Consulta de dados semiestruturados.
Para exemplos de uso de GET com XMLGET, consulte as seções Exemplos e Notas de uso em XMLGET.