Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — VUNESP 2023

Banco de DadosConsultas e Comandos em SQL
Código
vu195636
Banca
VUNESP
Órgão
TJM SP
Ano
2023
Cargo
Ana SJ ( )
Considere a seguinte consulta SQL feita em um banco de dados relacional:   SELECT Operadora, Plano FROM Conta WHERE Plano LIKE ‘Special%’ ORDER BY Operadora   Um possível resultado obtido a partir dessa consulta é
  1. AOperadora Plano Abc Special Plus Camel Special X Lotus Special 1
  2. BOperadora Plano Lotus Special 1 Camel Special X Abc Top Special Plus
  3. COperadora Plano Lotus Special 1 Camel Special X Abc Top Special Plus
  4. DOperadora Plano Lotus Plano Special 1 Camel Plano Special X Abc Top Special Plus
  5. EOperadora Plano Abc 1 Special Camel X Special Lotus Top Plus Special
Revelar gabarito e comentário

GabaritoA — Operadora Plano Abc Special Plus Camel Special X Lotus Special 1

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 no SQL: curingas % e _

Gabarito: letra A. A consulta SELECT Operadora, Plano FROM Conta WHERE Plano LIKE 'Special%' ORDER BY Operadora retorna apenas as linhas em que o valor da coluna Plano começa com a string literal 'Special' (o curinga % casa com qualquer sequência de caracteres, inclusive vazia), e o resultado é ordenado alfabeticamente pela coluna Operadora. A alternativa A é a única que apresenta exclusivamente planos iniciados por "Special" (Special Plus, Special X, Special 1) e as operadoras em ordem alfabética (Abc, Camel, Lotus).

O operador LIKE é um dos recursos mais cobrados em provas de SQL justamente porque exige que o candidato domine os dois curingas: % (porcentagem) e _ (underscore). O % representa qualquer sequência de caracteres, inclusive a sequência vazia — ou seja, casa com zero, um ou vários caracteres. Já o _ representa exatamente um único caractere. Essa distinção é a chave para resolver qualquer questão que envolva busca por padrão em strings.

Na consulta em análise, o padrão é 'Special%'. Isso significa que o valor da coluna Plano deve começar com a palavra "Special" e pode ter qualquer coisa depois (inclusive nada). Portanto, planos como "Special Plus", "Special X" e "Special 1" atendem à condição. Por outro lado, planos como "Top Special Plus" (que começa com "Top"), "Plano Special 1" (que começa com "Plano") ou "1 Special" (que começa com "1") não atendem, pois a string não começa com "Special".

Além do filtro, a consulta usa ORDER BY Operadora, que ordena o resultado em ordem alfabética crescente (A-Z) pela coluna Operadora. Isso significa que, entre as linhas que passaram no filtro, a ordenação é feita pelo nome da operadora, não pelo plano. No caso da alternativa A, as operadoras são Abc, Camel e Lotus — exatamente em ordem alfabética.

A pegadinha clássica desta questão é o candidato confundir o comportamento do % com o do _, ou esquecer que o LIKE exige que o padrão case com a string desde o início quando não há curinga no começo. Outra armadilha é ignorar o ORDER BY e aceitar uma alternativa que tenha os planos corretos, mas as operadoras fora de ordem alfabética. Guarde a fronteira: % = qualquer quantidade de caracteres (inclusive zero); _ = exatamente um caractere. É exatamente nessa distinção que as alternativas se dividem.

Operador LIKE
  • 1Curingas
    • % (qualquer sequência, inclusive vazia)
    • _ (exatamente um caractere)
  • 2Padrão 'Special%'
    • Deve começar com "Special"
    • % casa com o que vem depois
  • 3ORDER BY Operadora
    • Ordem alfabética crescente (A-Z)
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

Esta é a única alternativa que atende simultaneamente às duas condições da consulta. Todos os planos listados (Special Plus, Special X, Special 1) começam com a string "Special", satisfazendo o LIKE 'Special%'. Além disso, as operadoras (Abc, Camel, Lotus) estão em ordem alfabética crescente, conforme o ORDER BY Operadora. Não há nenhuma linha que viole o filtro ou a ordenação.

Alternativa B — ❌ Incorreta

O erro está na linha da operadora Abc: o plano é "Top Special Plus", que não começa com "Special". A string "Top Special Plus" inicia com "Top", portanto não atende ao padrão LIKE 'Special%'. Além disso, mesmo que o filtro fosse ignorado, a ordenação estaria errada: Lotus, Camel, Abc não está em ordem alfabética (o correto seria Abc, Camel, Lotus).

Alternativa C — ❌ Incorreta

Esta alternativa é idêntica à B e contém o mesmo erro: o plano "Top Special Plus" da operadora Abc não começa com "Special", violando o filtro LIKE 'Special%'. A ordenação também está incorreta (Lotus, Camel, Abc), pois o ORDER BY Operadora exige ordem alfabética crescente.

Alternativa D — ❌ Incorreta

O erro aqui é duplo. Primeiro, os planos "Plano Special 1" e "Plano Special X" não começam com "Special" — começam com "Plano", portanto não atendem ao LIKE 'Special%'. Segundo, a ordenação está incorreta: Lotus, Camel, Abc não segue a ordem alfabética exigida pelo ORDER BY Operadora.

Alternativa E — ❌ Incorreta

Nenhum dos planos listados começa com "Special": "1 Special", "X Special" e "Top Plus Special" são strings que terminam com "Special", mas o padrão 'Special%' exige que a string comece com "Special". O curinga % no final do padrão permite qualquer coisa depois de "Special", mas não antes. Portanto, nenhuma linha atende ao filtro.

NÃO CAIA NESSA!

A banca explora a confusão entre o curinga % e a posição da string literal no padrão. Em 'Special%', a palavra "Special" deve estar no início do valor; o % só casa com o que vem depois. Alternativas como a E mostram planos que contêm "Special" em outra posição ("1 Special", "X Special") — o candidato desatento pode achar que basta a palavra aparecer em algum lugar. Lembre-se: sem curinga antes de "Special", o valor precisa começar exatamente com essa string.

PEGA ESSA DICA!

Para resolver questões de LIKE rapidamente, aplique dois testes mentais: (1) o valor começa com a parte literal do padrão? (2) a parte variável (representada por % ou _) casa com o restante? Se a resposta for sim para ambos, a linha é retornada. E não se esqueça do ORDER BY: confira sempre se a ordenação está correta, pois a banca adora incluir linhas válidas fora de ordem para derrubar o candidato.

Gabarito: letra A

Link permanente: /questoes/vu195636