- 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
array
for uma ARRAY semiestruturada, esta função retornará NULL.Se
array
for 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_name
não pode ser uma cadeia de caracteres vazia.Se
object
for um OBJECT estruturado, você deverá especificar uma constante parafield_name
.Se
object
não contiver a chave especificada:Se
object
for um OBJECT semiestruturado, a função retornará NULL.Se
object
for 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
map
nã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 OBJECT, ARRAY ou VARIANT semiestruturado, a função retornará um VARIANT. O tipo de dados é VARIANT porque:
Em um ARRAY, cada elemento é do tipo VARIANT.
Em um 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á 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 sevariant
não contiver um OBJECT.Se o segundo parâmetro for do tipo INTEGER (por exemplo, um
index
), a função retorna NULL sevariant
nã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.