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%'
Explore posts in the same categories: PostgreSQL

Tags: ,

You can comment below, or link to this permanent URL from your own site.

Comment:

You must be logged in to post a comment.