Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — FGV 2024

Banco de DadosConsultas e Comandos em SQL
Código
fg165261
Banca
FGV
Órgão
CVM
Ano
2024
Cargo
Ana ( )
Observe o script SQL a seguir. CREATE TABLE Pessoa (Nome varchar(255)); INSERT INTO Pessoa (Nome) VALUES ('Ana Luca'); INSERT INTO Pessoa (Nome) VALUES ('Antonio Silva'); INSERT INTO Pessoa (Nome) VALUES ('Tania Rosendo'); INSERT INTO Pessoa (Nome) VALUES ('Rosa Flor'); INSERT INTO Pessoa (Nome) VALUES ('Lara Bel'); SELECT * FROM Pessoa WHERE (Nome LIKE 'A_A%' OR Nome LIKE 'R%' /*OR Nome LIKE '%BEL' OR Nome LIKE '%T%'*/ OR Nome LIKE '%F');   O resultado JSON da execução do script apresentado é:
  1. A[{"Nome":"Ana Luca"},{"Nome":"Rosa Flor"}]
  2. B[{"Nome":"Rosa Flor"},{"Nome":"Lara Bel"}]
  3. C[{"Nome":"Ana Luca"},{"Nome":"Tania Rosendo"},{"Nome":"Lara Bel"}]
  4. D[{"Nome":"Antonio Silva"},{"Nome":"Tania Rosendo"},{"Nome":"Rosa Flor"}]
  5. E[{"Nome":"Ana Luca"},{"Nome":"Antonio Silva"},{"Nome":"Tania Rosendo"},{"Nome":"Lara Bel"}]
Revelar gabarito e comentário

GabaritoA — [{"Nome":"Ana Luca"},{"Nome":"Rosa Flor"}]

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

Operador LIKE e curingas em SQL

Gabarito: letra A — a consulta retorna apenas Ana Luca e Rosa Flor. O segredo está em interpretar corretamente os curingas do LIKE: _ casa exatamente um caractere, % casa zero ou mais caracteres, e o trecho /* ... */ é um comentário que desativa as condições LIKE '%BEL' e LIKE '%T%'. Assim, a condição efetiva é Nome LIKE 'A_A%' OR Nome LIKE 'R%' OR Nome LIKE '%F'.

O operador LIKE é usado em SQL para comparação de padrões em strings, e seus dois curingas principais são o % (percentual) e o _ (sublinhado). O % representa uma sequência de zero ou mais caracteres — ou seja, pode casar com nada, com uma letra, ou com uma string inteira. Já o _ representa exatamente um caractere — nem mais, nem menos. Essa distinção é crucial: 'A_A%' não é o mesmo que 'A%A'; o primeiro exige que, após o 'A' inicial, haja um caractere qualquer, depois outro 'A', e então qualquer coisa (inclusive nada).

Outro ponto essencial é o comentário em SQL. O par /* ... */ delimita um comentário de bloco, que pode ocupar várias linhas e é completamente ignorado pelo interpretador. No script, o comentário começa após OR Nome LIKE 'R%' e termina antes de OR Nome LIKE '%F', desativando as condições LIKE '%BEL' e LIKE '%T%'. Isso é uma pegadinha clássica: o candidato que não percebe o comentário inclui condições que não existem e chega a um resultado errado.

Vamos aplicar a condição efetiva a cada nome da tabela:

  • Ana Luca: 'A_A%' — começa com 'A', tem 'n' como segundo caractere (o _), depois 'a' (o segundo 'A'), e o restante ' Luca' casa com %. ✅

  • Antonio Silva: começa com 'A', mas o segundo caractere é 'n' e o terceiro é 't' — não casa com 'A_A%' (precisaria de 'A' na terceira posição). Também não começa com 'R' nem termina com 'F'. ❌

  • Tania Rosendo: não começa com 'A' nem com 'R', e não termina com 'F'. ❌

  • Rosa Flor: começa com 'R' — casa com 'R%'. ✅

  • Lara Bel: não começa com 'A' nem com 'R', e não termina com 'F' (termina com 'l'). ❌

A pegadinha aqui é dupla: primeiro, o candidato pode esquecer que _ casa um caractere e tratá-lo como %; segundo, pode não notar o comentário /* ... */ e incluir as condições '%BEL' e '%T%', o que adicionaria Lara Bel (termina com 'Bel', case-insensitive em muitos bancos) e Tania Rosendo (contém 'T') ao resultado. A banca explora exatamente essa confusão entre os curingas e a sintaxe de comentário.

Guarde a fronteira entre _ (um caractere) e % (zero ou mais), e lembre-se de que /* */ desativa o que está dentro — é nesse par de detalhes que as alternativas se dividem.

Alternativa A — ✅ Correta ⟵ GABARITO

A consulta efetiva, após remover o comentário, é WHERE Nome LIKE 'A_A%' OR Nome LIKE 'R%' OR Nome LIKE '%F'. Aplicando:

  • 'A_A%' casa com Ana Luca (A + n + a + ' Luca').

  • 'R%' casa com Rosa Flor.

  • '%F' não casa com nenhum nome (nenhum termina com 'F' maiúsculo; 'Rosa Flor' termina com 'r').

Resultado: [{"Nome":"Ana Luca"},{"Nome":"Rosa Flor"}] — exatamente o que a alternativa traz.

Alternativa B — ❌ Incorreta

Inclui Lara Bel no resultado, o que só ocorreria se a condição LIKE '%BEL' estivesse ativa. Mas essa condição está dentro do comentário /* ... */ e, portanto, é ignorada. Além disso, Rosa Flor está correta, mas a presença de Lara Bel torna a alternativa errada.

Alternativa C — ❌ Incorreta

Inclui Tania Rosendo e Lara Bel, ambos incorretos. Tania Rosendo só entraria se a condição LIKE '%T%' estivesse ativa (ela contém 'T'), e Lara Bel só entraria com LIKE '%BEL' — mas ambas estão comentadas. Ana Luca está correta, mas a alternativa como um todo falha.

Alternativa D — ❌ Incorreta

Inclui Antonio Silva e Tania Rosendo, ambos incorretos. Antonio Silva não casa com 'A_A%' (terceiro caractere é 't', não 'A'), não começa com 'R' e não termina com 'F'. Tania Rosendo também não atende a nenhuma condição ativa. Rosa Flor está correta, mas a alternativa está errada.

Alternativa E — ❌ Incorreta

Inclui Antonio Silva, Tania Rosendo e Lara Bel, todos incorretos pelas mesmas razões: Antonio Silva não casa com 'A_A%', Tania Rosendo e Lara Bel dependem de condições comentadas. Ana Luca está correta, mas a alternativa como um todo está errada.

NÃO CAIA NESSA!

A banca esconde duas condições dentro de um comentário /* ... */ e usa o curinga _ (um caractere) no lugar de % (zero ou mais). O candidato apressado lê o LIKE como se _ fosse % e ignora o comentário, incluindo Lara Bel (via '%BEL') e Tania Rosendo (via '%T%') no resultado. Com treino, você aprende a caçar comentários e a diferenciar os curingas de longe 💪.

PEGA ESSA DICA!

Na prova, ao ver um LIKE, sublinhe mentalmente cada curinga: _ = um caractere, % = zero ou mais. E antes de avaliar a condição, procure por /* e */ — tudo entre eles é comentário e não conta. Se a alternativa trouxer nomes que só casam com condições comentadas, descarte-a na hora.

Gabarito: letra A

Link permanente: /questoes/fg165261