- Categorias:
Funções de dados semiestruturados (Extração)
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> )
Argumentos¶
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.
Se o OBJECT não contém a chave especificada, esta função retorna NULL.
O
field_name
não deve ser uma cadeia de caracteres vazia.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 elemento indexado apontar para fora dos limites da matriz, ou se o elemento indexado não existir (em uma matriz esparsa), então esta função retornará NULL.
variant
Uma expressão que avalia como um VARIANT que contém um ARRAY ou um OBJECT.
Retornos¶
O tipo de dados do valor retornado é VARIANT.
O valor retornado é o elemento especificado do ARRAY, ou o valor que corresponde à chave especificada de um par chave-valor no OBJECT. 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.
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.