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

JSON do PostgreSQL versus JSON do PostgreSQL. JSONB

O PostgreSQL fornece funções JSON para manipular e consultar dados JSON armazenados no banco de dados. Essas funções são essenciais para lidar com os tipos de dados JSON e JSONB, permitindo que os usuários extraiam e manipulem o conteúdo JSON com eficiência.

Uso

As funções JSON no PostgreSQL são usadas para acessar e manipular os tipos de dados JSON e JSONB, que são ideais para armazenar dados semiestruturados. Essas funções permitem operações como extração de elementos, conversão de formatos de dados e realização de correspondência de padrões.

sql
-- Extracting a JSON object field by key
SELECT json_column -> 'key' FROM table_name;

-- Extracting a JSONB object field by key
SELECT jsonb_column -> 'key' FROM table_name;

Nessas sintaxes, `->` é usado para extrair um objeto JSON, enquanto `->>` é usado para extrair um valor de texto de uma coluna JSON ou JSONB.

Funções JSON adicionais

Aqui estão algumas funções adicionais que podem ser úteis:

  • `jsonb_set`: Atualiza valores em um documento JSONB.
  • `jsonb_insert`: Insere um novo valor em um documento JSONB em um caminho especificado.
  • `jsonb_path_query`: Extrai valores JSONB que correspondem a uma consulta JSONPath especificada.

Exemplos

1. Extração de um campo JSON

sql
SELECT data -> 'name' AS name
FROM users;

Este exemplo extrai o valor do campo `name` de uma coluna JSON `data` na tabela `users`.

2. Conversão de JSON em JSONB

sql
SELECT data::jsonb
FROM users;

Aqui, uma coluna JSON é convertida em JSONB, o que proporciona benefícios como eficiência de armazenamento, melhorias de desempenho e indexação e consulta mais eficientes.

3. Consulta complexa com JSONB

sql
SELECT id, jsonb_array_elements(data->'items')->>'product_name' AS product_name
FROM orders;

Essa consulta extrai `product_name` de cada elemento da matriz `items` em uma coluna JSONB `data`.

Dicas e práticas recomendadas

  • Escolha JSONB para obter eficiência. Em geral, o JSONB é mais rápido para consulta e indexação e oferece melhor eficiência de armazenamento em comparação com o JSON.
  • Use operadores apropriados. Familiarize-se com os operadores JSON, como `->`, `->>` e `#>>`, para extrair e manipular dados. Por exemplo, `->` extrai um objeto JSON, enquanto `->>` extrai um valor de texto.
  • Indexar colunas JSONB. Crie índices em colunas JSONB para acelerar as operações de pesquisa.
  • Valide seus dados JSON. Certifique-se de que os dados JSON sejam válidos antes de inseri-los no banco de dados para evitar erros de tempo de execução.
  • Use as funções JSON de forma criteriosa. Embora eficientes, as funções JSON podem exigir muito desempenho; use-as quando necessário.
  • Quando você deve escolher JSON em vez de JSONB. Opte pelo JSON quando a formatação original e a ordenação das chaves forem importantes para seu caso de uso.

Resumo dos operadores JSON

Operador Descrição
`->` Extrai o objeto JSON
`->>` Extrai o valor de texto do JSON
`#>>` Extrai o valor do texto usando elementos de caminho