Pular para o conteúdo principal

Questão de Banco de Dados — PostgreSQL — CESPE / CEBRASPE 2025

Banco de DadosPostgreSQL
Código
ce417252
Banca
CESPE / CEBRASPE
Órgão
TRF 6
Ano
2025
Cargo
AJ TRF6
Julgue o item a seguir, relativo a PostgreSQL e H2 Database.   SELECT 'trf minas gerais'::tsvector @@ 'trf'::tsquery as resultado; O resultado apresentado após a execução do código precedente, desenvolvido em PostgreSQL 17, será o seguinte. resultado ----------- t (1 row)
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoC — Certo

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

PostgreSQL – Full-Text Search (tsvector e tsquery)

Gabarito: Certo. A expressão 'trf minas gerais'::tsvector @@ 'trf'::tsquery retorna t (true) porque o operador @@ verifica se a consulta de texto (tsquery) corresponde ao documento (tsvector), e o termo 'trf' está presente no vetor de texto. O resultado apresentado no enunciado está correto.

A busca em texto completo (full-text search) no PostgreSQL é um recurso que permite pesquisar documentos por palavras ou frases, indo além do simples LIKE. Para isso, o PostgreSQL utiliza dois tipos de dados específicos: tsvector e tsquery.

O tsvector representa um documento já processado, contendo os lexemas (palavras normalizadas) e suas posições no texto. O tsquery representa uma consulta de busca, também processada, que pode conter operadores booleanos como & (E), | (OU) e ! (NÃO). O operador @@ é o coração da busca: ele retorna true se a tsquery encontrar correspondência no tsvector.

No exemplo da questão, 'trf minas gerais'::tsvector cria um vetor com os lexemas 'trf', 'minas' e 'gerais'. A consulta 'trf'::tsquery busca pelo lexema 'trf'. Como 'trf' está presente no vetor, o operador @@ retorna true, que é exibido como t no psql. O resultado t (true) é exatamente o que o enunciado apresenta.

É importante notar que a busca em texto completo é diferente de uma busca por substring. O LIKE '%trf%' encontraria 'trf' em qualquer parte da string, enquanto o tsvector/tsquery trabalha com lexemas normalizados. Por exemplo, a palavra 'TRF' em maiúsculas seria normalizada para 'trf' e encontraria correspondência, mas uma busca por 'tr' não encontraria 'trf' como lexema, pois 'tr' não é uma palavra completa.

A pegadinha que a banca poderia explorar é a confusão entre tsvector e tsquery, ou achar que o operador @@ funciona como um LIKE. Mas aqui, a questão é direta: o termo 'trf' está no vetor, então o resultado é true. Guarde essa distinção: tsvector é o documento, tsquery é a busca, e @@ é o operador de correspondência.

  1. 1tsvector (documento processado)
  2. 2tsquery (consulta processada)
  3. 3Operador @@ (correspondência)
  4. 4Retorna true se houver match
LEVEL · soulevel.com.br

Alternativa C — ✅ Certo ⟵ GABARITO

A alternativa está correta. O comando SELECT 'trf minas gerais'::tsvector @@ 'trf'::tsquery as resultado; retorna t (true), pois o operador @@ verifica se a tsquery 'trf' corresponde ao tsvector 'trf minas gerais'. Como o lexema 'trf' está presente no vetor, a condição é verdadeira. O resultado exibido no enunciado (t) é exatamente o que o PostgreSQL retornaria.

Gabarito: Certo

Link permanente: /questoes/ce417252