Questão de Banco de Dados — Consultas e Comandos em SQL — FUNDATEC 2024
Banco de Dados›Consultas e Comandos em SQL
Código
qa630533
Banca
FUNDATEC
Órgão
Pref Criciúma
Ano
2024
Cargo
AFRM ( )
campo1
A
ABC
AA
AAAA
AAA
Qual seria o conjunto de valores retornado como resultado da execução do comando SQL abaixo?
SELECT * FROM taba WHERE campo1 NOT LIKE 'AA_'
A'A', 'AA', e 'AAAA'
B'A', 'AA', 'AAAA' e 'ABC'
C'AA', 'AAA' e 'AAAA'
D'AA' e 'AAA'
E'AA'
Revelar gabarito e comentário▾
GabaritoB — 'A', 'AA', 'AAAA' e 'ABC'
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 no SQL
Gabarito: letra B. O comando SELECT * FROM taba WHERE campo1 NOT LIKE 'AA_' retorna as linhas cujo valor de campo1não corresponde ao padrão 'AA_' — ou seja, que não possuem exatamente três caracteres, começando com 'AA' e terminando com qualquer caractere. Como 'AAA' é o único valor que casa com o padrão, ele é excluído; todos os demais ('A', 'AA', 'AAAA' e 'ABC') são retornados.
O operador LIKE é usado em SQL para comparar uma coluna com um padrão de string, utilizando dois curingas principais: % (percentual) e _ (underscore). O curinga % corresponde a zero ou mais caracteres — ou seja, qualquer sequência de caracteres, inclusive vazia. Já o curinga _ corresponde a exatamente um caractere — um único caractere qualquer. Essa distinção é fundamental para entender a questão.
No padrão 'AA_', temos a string 'AA' seguida de um underscore. Isso significa que o padrão corresponde a qualquer string que tenha exatamente três caracteres, onde os dois primeiros são 'A' e 'A', e o terceiro é qualquer caractere. Portanto, o padrão casa com 'AAA' (e também com 'AAB', 'AA1', etc., se existissem).
Aplicando isso à tabela fornecida:
campo1
Casa com 'AA_'?
Retornado?
'A'
Não (tem 1 caractere)
Sim
'ABC'
Não (não começa com 'AA')
Sim
'AA'
Não (tem 2 caracteres)
Sim
'AAAA'
Não (tem 4 caracteres)
Sim
'AAA'
Sim (tem 3 caracteres, começa com 'AA')
Não
O comando NOT LIKE simplesmente inverte a condição: retorna as linhas que não correspondem ao padrão. Como apenas 'AAA' corresponde, todas as outras quatro linhas são retornadas.
A pegadinha clássica desta questão é confundir o curinga _ com o curinga %. Se o padrão fosse 'AA%', ele corresponderia a qualquer string que começa com 'AA', independentemente do tamanho — retornando 'AA', 'AAAA' e 'AAA'. Mas com _, o padrão é restrito a exatamente três caracteres. Outra confusão comum é esquecer que NOT LIKE exclui apenas o que casa com o padrão, não o que é diferente dele.
Guarde a diferença entre os dois curingas: % é "qualquer coisa, inclusive nada", enquanto _ é "exatamente um caractere". É exatamente essa distinção que separa as alternativas desta questão.
Alternativa A — ❌ Incorreta
Falta o valor 'ABC'. O valor 'ABC' não corresponde ao padrão 'AA_' porque não começa com 'AA' — ele começa com 'AB'. Portanto, ele deve ser retornado pelo NOT LIKE. A alternativa exclui indevidamente um valor que deveria estar no resultado.
Alternativa B — ✅ Correta ⟵ GABARITO
Inclui exatamente os quatro valores que não correspondem ao padrão 'AA_': 'A' (1 caractere), 'AA' (2 caracteres), 'AAAA' (4 caracteres) e 'ABC' (não começa com 'AA'). O único valor que casa com o padrão é 'AAA', que é corretamente excluído. A alternativa espelha perfeitamente o resultado da consulta.
Alternativa C — ❌ Incorreta
Exclui 'A' e 'ABC', que deveriam ser retornados, e inclui 'AAA', que deveria ser excluído. 'A' tem apenas 1 caractere, 'ABC' não começa com 'AA' — ambos não casam com o padrão. 'AAA' casa com o padrão e, portanto, não deve aparecer no resultado de NOT LIKE.
Alternativa D — ❌ Incorreta
Inclui 'AAA', que casa com o padrão e deveria ser excluído, e exclui 'A', 'AAAA' e 'ABC', que deveriam ser retornados. A alternativa parece considerar que o padrão 'AA_' casa com strings de 2 ou 3 caracteres, o que é um erro de interpretação do curinga _.
Alternativa E — ❌ Incorreta
Inclui apenas 'AA', excluindo 'A', 'AAAA' e 'ABC', que deveriam ser retornados. A alternativa parece considerar que o padrão 'AA_' casa com strings de 2 ou 3 caracteres, o que é um erro de interpretação do curinga _.
NÃO CAIA NESSA!
A banca explora a confusão entre os curingas % e _. O candidato que decora que % significa "qualquer coisa" pode aplicar isso ao _ e errar. Lembre-se: _ é um caractere, não vários. Se o padrão fosse 'AA%', a resposta seria diferente — mas com _, apenas 'AAA' casa.
PEGA ESSA DICA!
Para resolver questões com LIKE, identifique primeiro o que o padrão casa: conte os caracteres fixos e os curingas. _ conta como 1 caractere, % conta como 0 ou mais. Depois, aplique o NOT mentalmente: o que casa é excluído, o que não casa é retornado.