Questão de Banco de Dados — Consultas e Comandos em SQL — FGV 2024
Banco de Dados›Consultas 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 é:
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.