PostgreSQL ILIKE
O operador ILIKE
no PostgreSQL é uma versão sem distinção entre maiúsculas e minúsculas do operador LIKE
, usado para correspondência de padrões em consultas SQL. Ele permite que você pesquise um padrão especificado em uma cadeia de caracteres, ignorando as diferenças entre maiúsculas e minúsculas. Observe que ILIKE
é específico do PostgreSQL e pode não estar disponível em outros ambientes SQL.
Uso
O operador ILIKE
é útil quando você precisa fazer a correspondência de padrões sem distinção entre maiúsculas e minúsculas em operações de comparação de cadeias de caracteres. É frequentemente usado nas cláusulas WHERE
para filtrar resultados com base em um padrão, independentemente do caso.
SELECT column1, column2, ...
FROM table_name
WHERE column_name ILIKE pattern;
Nessa sintaxe, column_name ILIKE pattern
especifica a coluna a ser pesquisada e o padrão a ser correspondido, sendo que a pesquisa não diferencia maiúsculas de minúsculas. Esteja ciente de que os resultados podem variar dependendo das codificações e agrupamentos de caracteres, especialmente em bancos de dados multilíngues.
Exemplos
1. Correspondência básica com distinção entre maiúsculas e minúsculas
SELECT *
FROM employees
WHERE first_name ILIKE 'john';
Este exemplo recupera todas as linhas da tabela employees
em que a coluna first_name
corresponde a "john" de uma maneira que não diferencia maiúsculas de minúsculas, como "John", "john" ou "JOHN".
2. Uso de curingas
SELECT *
FROM products
WHERE product_name ILIKE '%apple%';
Aqui, a consulta procura qualquer ocorrência de "apple" na coluna product_name
, independentemente do caso, permitindo correspondências como "Green Apple", "apple" ou "APPLE pie".
3. Correspondência de padrões complexos
SELECT *
FROM orders
WHERE order_description ILIKE 'order #%_';
Este exemplo usa os curingas sublinhado (_
) e sinal de porcentagem (%
) para corresponder a qualquer caractere único e a qualquer sequência de caracteres, respectivamente, o que o torna útil para correspondências de padrões mais complexas, ignorando maiúsculas e minúsculas.
Dicas e práticas recomendadas
- Use com sabedoria para obter desempenho.
ILIKE
pode ser mais lento do queLIKE
devido à sua natureza não sensível a maiúsculas e minúsculas, portanto, use-o somente quando necessário. - Combine com índices. Se possível, use índices funcionais com
LOWER()
para melhorar o desempenho em grandes conjuntos de dados ao usarILIKE
. Por exemplo:CREATE INDEX idx_lower_first_name ON employees (LOWER(first_name));
- Tenha em mente as configurações de local. O desempenho pode variar de acordo com as configurações de localidade e codificações de caracteres.
- Otimize o uso de padrões. Use padrões específicos para minimizar o escopo da pesquisa e melhorar a velocidade da consulta. Se possível, evite iniciar padrões com curingas.
- Considere a possibilidade de usar o módulo
citext
. Para aplicativos que exigem comparação frequente de texto sem distinção entre maiúsculas e minúsculas, o módulocitext
fornece um tipo de texto sem distinção entre maiúsculas e minúsculas. - Considerações sobre a versão. Embora não haja grandes diferenças no comportamento do
ILIKE
entre as versões do PostgreSQL, sempre verifique as notas de versão para ver se há pequenas atualizações ou correções de bugs.