Pular para o conteúdo principal

Questão de Banco de Dados — PostgreSQL — FCC 2017

Banco de DadosPostgreSQL
Código
fc039837
Banca
FCC
Órgão
TRT - 24ª REGIÃO (MS)
Ano
2017
Nível
Superior
Cargo
Analista Judiciário - Tecnologia da Informação
Ao executar a instrução SELECT SUBSTRING ('XY1234Z', 'Y*([0-9]{1,3})'); no PostgreSQL versão 9.4 será exibido o valor
  1. A123
  2. BY12
  3. CY
  4. D1234
  5. EXY1
Revelar gabarito e comentário

GabaritoA — 123

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”.

Função SUBSTRING com expressão regular no PostgreSQL

Gabarito: letra A. A função SUBSTRING(string, pattern) no PostgreSQL, quando o padrão contém parênteses, retorna a substring que corresponde ao primeiro grupo de captura, e não ao padrão inteiro. No padrão 'Y*([0-9]{1,3})', o grupo captura '123' — exatamente o que será exibido.

A banca testa o conhecimento do comportamento específico do PostgreSQL para SUBSTRING com expressões regulares POSIX. Diferente de outras linguagens, onde a função retorna a correspondência completa do padrão, o PostgreSQL retorna o texto do primeiro parêntese de captura quando existente.

Detalhamento do padrão

  • String: 'XY1234Z'

  • Padrão: 'Y*([0-9]{1,3})'

    • Y* — zero ou mais ocorrências do caractere 'Y'.

    • ([0-9]{1,3}) — grupo de captura com 1 a 3 dígitos.

A correspondência se dá a partir da posição do 'Y': Y* consome o 'Y', e o grupo captura os três primeiros dígitos '123'. Como o quantificador é ganancioso, ele pega o máximo possível (3 dígitos). O resultado é '123'.

  1. 1String: 'XY1234Z'
  2. 2Padrão: 'Y*([0-9]{1,3})'
  3. 3Y* consome o 'Y'
  4. 4Grupo captura 3 dígitos: '123'
  5. 5Retorna o grupo capturado
LEVEL · soulevel.com.br

Análise das alternativas

  • Alternativa A — ✅ Correta ⟵ GABARITO

    Retorna '123', que é o conteúdo do primeiro grupo de captura.

  • Alternativa B — ❌ Incorreta

    'Y12' seria o resultado se o grupo capturasse apenas 2 dígitos após um Y, mas o grupo captura 3, e a função não inclui o Y (apenas o grupo).

  • Alternativa C — ❌ Incorreta

    'Y' corresponderia à captura do grupo apenas se o grupo fosse Y, o que não é o caso.

  • Alternativa D — ❌ Incorreta

    '1234' tem 4 dígitos, mas o grupo limita a 3. O motor ganancioso pegaria '123', não '1234'.

  • Alternativa E — ❌ Incorreta

    'XY1' incluiria o X e um Y, mas o padrão não captura o X (Y* não casa com X) e o grupo captura 1 dígito apenas, mas o motor pega o máximo possível, que é 3.

PEGA ESSA DICA!

No PostgreSQL, decore o comportamento da SUBSTRING com expressão regular: se houver parênteses, retorna o primeiro grupo; caso contrário, retorna a correspondência completa. Essa distinção é clássica em questões de concursos.

Gabarito: letra A.

Link permanente: /questoes/fc039837