Pular para o conteúdo principal
Documentos
Sintaxe básicaFunções JSONAcionadoresGerenciamento de tabelas e esquemasFunções de cadeia de caracteresFunções matemáticasFunções de dataBancos de dadosÍndices

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 que LIKE 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 usar ILIKE. 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ódulo citext 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.