Olá, Andre. Como vai?
Essa é uma excelente dúvida! Na verdade, não foi apenas sorte; existe uma diferença lógica sutil entre as duas formas, mas a sua linha de raciocínio está correta dentro de um contexto específico.
Vamos analisar o que cada comando faz no banco de dados:
- Sua solução (
LIKE 'A%s'): Esse comando busca nomes que começam obrigatoriamente com a letra "A" e terminam obrigatoriamente com a letra "s". O símbolo % no meio indica que pode haver qualquer quantidade de caracteres entre o início e o fim. Se todos os funcionários que você precisava filtrar começavam com A e terminavam com S, o resultado será idêntico ao do gabarito. - Solução do gabarito (
LIKE 'A%' AND LIKE '%s'): Esta forma é mais "robusta". Ela verifica duas condições separadas: se o nome começa com A e se o nome termina com s.
Qual a diferença real?
A principal diferença aparece quando temos nomes muito curtos. Por exemplo, o nome "As":
- A sua lógica
LIKE 'A%s' encontrará "As", pois ele começa com A e termina com s (com zero caracteres entre eles). - A lógica do gabarito também encontrará "As".
A sua abordagem é, na verdade, uma forma mais performática e elegante de escrever a mesma consulta, pois você utiliza apenas um filtro em vez de dois conectados por um AND. Na prática do dia a dia, desenvolvedores costumam usar a sua forma A%s justamente por ser mais direta.
Dica de ouro: Case Sensitivity
No SQLite, o comando LIKE geralmente não diferencia maiúsculas de minúsculas (case-insensitive) para caracteres ASCII. No entanto, é sempre uma boa prática conferir se o seu banco de dados está configurado dessa forma, para garantir que "André" e "andré" sejam tratados corretamente.
Seu raciocínio demonstra que você está entendendo como os wildcards (curingas) funcionam no SQL. Continue simplificando seus códigos sempre que a lógica permitir!
Espero que possa ter lhe ajudado!