- Categorias:
GET_PATH , :
¶
Extrai um valor de dados semiestruturados usando um nome de caminho.
GET_PATH é uma variação de GET; toma como primeiro argumento um nome de coluna de VARIANT, OBJECT ou ARRAY e extrai o valor do campo ou o elemento de acordo com o nome do caminho fornecido como segundo argumento.
Sintaxe¶
GET_PATH( <column_identifier> , '<path_name>' )
<column_identifier>:<path_name>
:( <column_identifier> , '<path_name>' )
Argumentos¶
column_identifier
Uma expressão que avalia como uma coluna OBJECT, ARRAY ou VARIANT.
path_name
Uma expressão que avalia como um VARCHAR. Especifica o caminho para o campo ou elemento que você deseja extrair.
Para tipos estruturados, você deve especificar uma constante de cadeia de caracteres.
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_PATH é equivalente a uma cadeia de funções GET. Ele retorna NULL se o nome do caminho não corresponder a nenhum elemento.
A sintaxe do nome do caminho é a notação padrão JavaScript; ela consiste em uma concatenação de nomes de campo (identificadores) precedida por pontos (por exemplo,
.
) e operadores de índice (por exemplo,[<índice>]
):O primeiro nome de campo não exige que o período principal seja especificado.
Os valores do índice nos operadores de índice podem ser números decimais não negativos (para matrizes) ou literais de cadeia de caracteres de caracteres com aspas simples ou duplas (para campos de objetos).
Para obter mais detalhes, consulte Consulta de dados semiestruturados.
GET_PATH também oferece suporte a um atalho sintático usando o caractere
:
como operador de extração que separa o nome da coluna (que pode conter períodos) do especificador do caminho.Para manter a consistência sintática, a notação do caminho também oferece suporte a identificadores no estilo SQL de aspas duplas, e o uso de
:
como separadores de caminho.Quando o operador
:
é usado, qualquer número inteiro ou subexpressão de cadeia de caracteres pode ser incluída dentro do[]
.
Exemplos¶
Extrair o campo name
da tabela vartab
:
SELECT GET_PATH(v, 'attr[0].name') FROM vartab;
Este é o mesmo que o primeiro exemplo, mas utiliza :
como o operador de extração:
SELECT v:attr[0].name FROM vartab;O operador de extração
:
é um operador associado à esquerda. No exemplo acima, usarv:attr[0]:name
tem o mesmo efeito que o:
da esquerda, produzindo um valor de variante (contendo um objeto) do qual o operador de extração:
da direita extrai o valor do camponame
.
Este é o mesmo que o primeiro exemplo, mas usa identificadores do estilo SQL entre aspas duplas e :
como o separador de caminho:
SELECT GET_PATH('v:"attr"[0]:"name"') FROM vartab;