Pular para o conteúdo principal
Documentos
Sintaxe básicaFunções JSONAcionadoresGerenciamento de tabelas e esquemasFunções de cadeia de caracteresFunções matemáticasFunções de dataBancos de dadosÍndices

PostgreSQL ->> Operador

As funções JSON do PostgreSQL são ferramentas poderosas para consultar dados JSON armazenados em seu banco de dados. O operador `->>` é usado especificamente para extrair o valor de um campo de objeto JSON como texto, o que permite a fácil manipulação e comparação de dados.

Uso

O operador `->>` é usado quando você precisa recuperar o valor de um campo de objeto JSON como uma string de texto simples. Isso é particularmente útil quando você precisa realizar operações ou comparações nos valores de campo JSON.

sql
SELECT json_column->>'field_name'
FROM table_name;

Nessa sintaxe, `json_column` é a coluna que contém dados JSON e `field_name` é a chave cujo valor você deseja extrair como texto.

Comparação com o operador `->`

Enquanto o `->>` extrai o valor como texto, o operador `->` é usado quando você deseja recuperar um objeto ou matriz JSON. Use `->` se você precisar manter o tipo de JSON para manipulação posterior do JSON.

Exemplos

1. Extração básica

sql
SELECT data->>'name'
FROM employees;

Este exemplo extrai o campo `name` da coluna JSON `data` na tabela `employees` como uma string de texto.

2. Filtragem com valor extraído

sql
SELECT *
FROM orders
WHERE details->>'status' = 'shipped';

Aqui, o operador `->>` é usado para filtrar pedidos, verificando se o campo `status` na coluna JSON `details` é igual a 'shipped'.

3. Uso de valores extraídos em cálculos

sql
SELECT (details->>'quantity')::int * (details->>'price')::numeric AS total_cost
FROM sales;

Esse exemplo converte valores de texto extraídos para `quantidade` e `preço` em tipos numéricos e calcula o `custo total` para cada venda.

4. Manipulação de objetos JSON aninhados

Para objetos JSON aninhados, use vários operadores `->` antes de `->>` para navegar pela estrutura.

sql
SELECT json_column->'outer_key'->>'inner_key'
FROM table_name;

Este exemplo extrai o valor `inner_key` de um objeto JSON aninhado.

Dicas e práticas recomendadas

  • Converta os valores adequadamente. Use a conversão ao realizar cálculos ou comparações para garantir que os dados estejam no tipo correto.
  • Indexar chaves JSON. Considere a possibilidade de criar índices em chaves JSON consultadas com frequência para melhorar o desempenho da consulta.
  • Validar a estrutura JSON. Certifique-se de que a estrutura de dados JSON seja consistente entre as linhas para evitar erros de tempo de execução.
  • Use `->` em vez de `->>`. Use `->` quando você precisar manter o tipo JSON e `->>` para extrair texto simples para manipulação posterior.

Erros e armadilhas em potencial

  • Chaves inexistentes: Se uma chave inexistente for consultada com `->>`, você retornará `NULL`.
  • Dados não JSON: Certifique-se de que os dados da coluna estejam no formato JSON para evitar erros.

Observação adicional sobre JSONB

Considere usar JSONB em vez de JSON para obter melhor desempenho e recursos de indexação. O JSONB armazena dados em um formato binário, que pode ser mais eficiente para consulta e indexação.