Consultas case-insensitive no PostgreSQL
No PostgreSQL a cláusula LIKE é case-sensitive, ou seja, diferencia maiúsculas de minúsculas. A alternativa para consultas case-insensitive é a cláusula ILIKE, que funciona de modo semelhante ao LIKE:
SELECT * FROM tabela WHERE nome ILIKE '%Rogério%'
Há outro problema nesta consulta: tanto o LIKE quanto o ILIKE consideram os acentos, ou seja, se existir um ‘Rogerio’ (sem acento) na tabela este registro será ignorado. Para que a consulta não considere os acentos e traga tanto ‘Rogério’ quanto ‘Rogerio’ ou ‘rogerio’, podemos usar a função para remover acentos:
SELECT * FROM tabela WHERE sem_acentos(nome) ILIKE sem_acentos('%Rogério%')
Uma outra opção é remover os acentos da string passada no ILIKE antes de montar a query, usando a linguagem que você estiver usando para desenvolver. A consulta então ficaria assim:
SELECT * FROM tabela WHERE sem_acentos(nome) ILIKE '%Rogerio%'
Tags: case-insensitive, PostgreSQL
You can comment below, or link to this permanent URL from your own site.