1
resposta

Case Sensitive com comportamento diferente nas cláusulas IN e Like

Boa tarde!

Achei curioso e pesquisando rapidamente não consegui encontrar uma resposta para a questão do case sensitive no exemplo da aula.

Utilizando a cláusula LIKE, são retornados resultados tanto para 'professor' quanto para 'Professor', sendo portanto case-insensitive:

select HE.ID_Colaborador, C.Nome, HE.Cargo, HE.DataTermino
from HistoricoEmprego As HE JOIN Colaboradores As C
on HE.ID_Colaborador = C.ID
where HE.Cargo LIKE '%professor%' and HE.DataTermino NOTNULL;

Já na cláusula IN, os resultados só são retornados para 'Professor', sendo portanto case-sensitive.

select HE.ID_Colaborador, C.Nome, HE.Cargo, HE.DataTermino
from HistoricoEmprego As HE JOIN Colaboradores As C
on HE.ID_Colaborador = C.ID
where HE.Cargo IN ('Dermatologista', 'Oftalmologista', 'Professor');

Isto está relacionado às cláusulas IN e LIKE que se comportam de maneiras diferentes?

1 resposta

Olá Luiz, tudo bem?

No SQLite, por padrão, a cláusula LIKE é case-insensitive, ou seja, não diferencia maiúsculas de minúsculas. Isso significa que, ao utilizar LIKE '%professor%', ele retornará resultados que contenham tanto "professor" quanto "Professor", sem se preocupar com a diferença de caixa.

Mas, a cláusula IN é case-sensitive, o que significa que ela diferencia maiúsculas de minúsculas. Quando você utiliza IN ('Dermatologista', 'Oftalmologista', 'Professor'), ele buscará exatamente essas strings, respeitando a caixa das letras. Portanto, se houver uma entrada com "professor" em minúsculas, ela não será retornada, a menos que você a inclua explicitamente na lista, como IN ('Dermatologista', 'Oftalmologista', 'Professor', 'professor').

Espero ter esclarecido!

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!