Ignorando case sensitive na consulta SQL

Vou mostrar aqui uma solução que tenho utilizado frequentemente em alguns trabalhos, substituindo um pouco uma série de tratamentos dentro da query e consequentemente, economizando um tempinho! Geralmente os SGBDs são case sensitive e é muito comum recorrermos a alternativas para transformar os textos na hora de comparar valores do banco case sensitive em consultas que fazemos.

Por | @msantino Programação
Vou mostrar aqui uma solução que tenho utilizado frequentemente em alguns trabalhos, substituindo um pouco uma série de tratamentos dentro da query e consequentemente, economizando um tempinho!

Problema:


Como fazer buscas em banco de dados ignorando letras maiusculas/minusculas?

Geralmente os SGBDs são case sensitive e é muito comum recorrermos a alternativas para transformar os textos na hora de comparar valores do banco case sensitive em consultas que fazemos.

Exemplo de uma query comum:


SELECT * FROM cliente WHERE nome LIKE ‘%Marcelo%’;


Nessa query, retornarão apenas clientes que possuam Marcelo (com M maiúsculo) no nome. Se o valor consultado estivesse em letras minúsculas (marcelo), ignoraria todos os nomes em maiúsculos cadastrados no banco.

Alternativa Padrão:


Algumas pessoas passaram a utilizar a função UPPER para eliminar esse problema:
SELECT * FROM cliente WHERE UPPER(nome) LIKE ‘%’ || UPPER(’Marcelo’) || ‘%’;


Nesse caso, o valor armazenado na coluna nome será transformado para CAIXA ALTA e o mesmo acontecerá para o valor consultado. No caso, o valor Marcelo será transformado para MARCELO.

Isso funciona até certo ponto, pois essa função não converte letras acentuadas e caracteres especiais. No caso, João seria transformado para JOãO. Creio que esse não é o nosso objetivo, nesse caso.

Eis a solução para o problema:


Sendo assim, a melhor alternativa para esse caso seria usar o termo “~*” (til + asterísco). Nesse caso, o Postgre automaticamente procura por qualquer ocorrência do valor pesquisado, ignorando o case sensitive.
SELECT * FROM cliente WHERE nome ~* ‘Marcelo’;


Qualquer dúvida comentem...

Mais sobre: sql case sensitive consulta
Share Tweet
Recomendado
Comentários
Destaquesver tudo