Categorias:

Funções de cadeia de caracteres e binários (Correspondência/Comparação)

[ NOT ] ILIKE

Executa uma comparação que não diferencia maiúsculas de minúsculas para determinar se uma cadeia de caracteres corresponde ou não a um padrão especificado. Para correspondência que diferencia maiúsculas e minúsculas, use LIKE em seu lugar.

LIKE, ILIKE e RLIKE executam operações semelhantes. No entanto, RLIKE usa sintaxe POSIX ERE (Extended Regular Expression, ou expressão regular estendida) em vez da sintaxe padrão SQL usada por LIKE e ILIKE.

Dica

Você pode usar o serviço de otimização de pesquisa para melhorar o desempenho de consultas que chamam essa função. Para obter mais detalhes, consulte Serviço de otimização de pesquisa.

Consulte também:

[ NOT ] LIKE , [ NOT ] RLIKE

Sintaxe

<subject> [ NOT ] ILIKE <pattern> [ ESCAPE <escape> ]

ILIKE( <subject> , <pattern> [ , <escape> ] )
Copy

Argumentos

Obrigatório:

subject

Sujeito à correspondência.

pattern

Padrão a atender.

Opcional:

escape

Caractere(s) inserido(s) na frente de um curinga para indicar que o curinga deve ser interpretado como um caractere normal e não como um curinga.

Retornos

Retorna um BOOLEAN ou NULL.

  • Quando ILIKE é especificado, o valor será TRUE se houver uma correspondência. Caso contrário, retorna FALSE.

  • Quando NOT ILIKE é especificado, o valor será TRUE se não houver correspondência. Caso contrário, retorna FALSE.

  • Quando ILIKE ou NOT ILIKE é especificado, retorna NULL se algum argumento for NULL.

Notas de uso

  • Para incluir aspas simples ou outros caracteres especiais na correspondência de padrões, você pode usar uma sequência de escape de barra invertida.

  • NULL não é compatível com NULL. Em outras palavras, se o assunto for NULL e o padrão for NULL, isso não é considerado uma correspondência.

  • Curingas SQL são suportados em pattern:

    • Um sublinhado (_) corresponde a qualquer caractere individual.

    • Um sinal de porcentagem (%) corresponde a qualquer sequência de zero ou mais caracteres.

  • Os caracteres curinga em pattern incluem caracteres de nova linha (n) em subject como correspondências.

  • A correspondência de padrão cobre toda a cadeia de caracteres. Para combinar uma sequência em qualquer lugar dentro de uma cadeia de caracteres, comece e termine o padrão com %.

  • Não há caractere de escape padrão.

  • Se você usar a barra invertida como um caractere de escape, deverá escapar da barra invertida tanto na expressão quanto na cláusula ESCAPE. Por exemplo, o comando a seguir especifica que o caractere de escape é a barra invertida, e então usa esse caractere de escape para procurar por % como um literal (sem o caractere de escape, o % seria tratado como um curinga):

    'SOMETHING%' ILIKE '%\\%%' ESCAPE '\\';
    
    Copy

    Para exemplos de uso de caracteres de escape, consulte os exemplos para ILIKE. Para mais exemplos de uso de caracteres de escape, e em particular a barra invertida como um caractere de escape, consulte os exemplos para LIKE.

Detalhes do agrupamento

Somente as especificações de agrupamento upper, lower e trim são suportadas. Combinações com upper, lower e trim também são suportadas (por exemplo, upper-trim e lower-trim), exceto para combinações de localidade (por exemplo, en-upper).

Exemplos

Criar uma tabela que contenha algumas cadeias de caracteres:

CREATE OR REPLACE TABLE ilike_ex(name VARCHAR(20));
INSERT INTO ilike_ex VALUES
  ('John  Dddoe'),
  ('Joe   Doe'),
  ('John_down'),
  ('Joe down'),
  (null);
Copy

Os exemplos seguintes mostram o uso de ILIKE, NOT ILIKE e o caractere curinga %:

SELECT * 
  FROM ilike_ex 
  WHERE name ILIKE '%j%h%do%'
  ORDER BY 1;
Copy
+-------------+                                                                 
| NAME        |
|-------------|
| John  Dddoe |
| John_down   |
+-------------+
SELECT *
  FROM ilike_ex
  WHERE name NOT ILIKE '%j%h%do%'
  ORDER BY 1;
Copy
+-----------+
| NAME      |
|-----------|
| Joe   Doe |
| Joe down  |
+-----------+
SELECT * 
  FROM ilike_ex 
  WHERE name ILIKE '%j%h%^_do%' ESCAPE '^'
  ORDER BY 1;
Copy
+-----------+                                                                   
| NAME      |
|-----------|
| John_down |
+-----------+