- 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¶
arrayUma expressão que avalia como um ARRAY.
indexUma 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.
variantUma expressão que avalia como um VARIANT que contém um ARRAY ou um OBJECT.
objectUma expressão que avalia como um OBJECT que contém pares chave-valor.
field_nameUma 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 parafield_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.
mapUma expressão que avalia como um MAP.
keyA 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 sevariantnão contiver um OBJECT.Se o segundo parâmetro for do tipo INTEGER (por exemplo, um
index), a função retorna NULL sevariantnã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.