- Categorias:
- Funções de cadeia de caracteres e binários (Correspondência/Comparação) 
[ NOT ] LIKE¶
Executa uma comparação que 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 não diferencia maiúsculas e minúsculas, use ILIKE 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:
Sintaxe¶
<subject> [ NOT ] LIKE <pattern> [ ESCAPE <escape> ]
LIKE( <subject> , <pattern> [ , <escape> ] )
Argumentos¶
Obrigatório:
- subject
- Sujeito à correspondência. Este é normalmente um VARCHAR, embora alguns outros tipos de dados possam ser usados. 
- pattern
- Padrão a atender. Este é normalmente um VARCHAR, embora alguns outros tipos de dados possam ser usados. 
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 LIKE é especificado, o valor será TRUE se houver uma correspondência. Caso contrário, retorna FALSE. 
- Quando NOT LIKE é especificado, o valor será TRUE se não houver correspondência. Caso contrário, retorna FALSE. 
- Quando LIKE ou NOT LIKE é 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 - patternincluem caracteres de nova linha (- n) em- subjectcomo 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%' LIKE '%\\%%' ESCAPE '\\'; - Para exemplos de uso de caracteres de escape, e em particular a barra invertida como um caractere de escape, consulte Exemplos. 
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 like_ex(name VARCHAR(20));
INSERT INTO like_ex VALUES
  ('John  Dddoe'),
  ('John \'alias\' Doe'),
  ('Joe   Doe'),
  ('John_down'),
  ('Joe down'),
  ('Elaine'),
  (''),    -- empty string
  (null);
Os exemplos seguintes mostram o uso de LIKE, NOT LIKE e o caractere curinga %:
SELECT name
  FROM like_ex
  WHERE name LIKE '%Jo%oe%'
  ORDER BY name;
+------------------+
| NAME             |
|------------------|
| Joe   Doe        |
| John  Dddoe      |
| John 'alias' Doe |
+------------------+
SELECT name
  FROM like_ex
  WHERE name NOT LIKE '%Jo%oe%'
  ORDER BY name;
+-----------+
| NAME      |
|-----------|
|           |
| Elaine    |
| Joe down  |
| John_down |
+-----------+
SELECT name
  FROM like_ex
  WHERE name NOT LIKE 'John%'
  ORDER BY name;
+-----------+                                                                   
| NAME      |
|-----------|
|           |
| Elaine    |
| Joe   Doe |
| Joe down  |
+-----------+
SELECT name
  FROM like_ex
  WHERE name NOT LIKE ''
  ORDER BY name;
+------------------+
| NAME             |
|------------------|
| Elaine           |
| Joe   Doe        |
| Joe down         |
| John  Dddoe      |
| John 'alias' Doe |
| John_down        |
+------------------+
O exemplo a seguir usa uma barra invertida para escapar uma aspa simples para que ela possa ser encontrada na correspondência de padrões:
SELECT name
  FROM like_ex
  WHERE name LIKE '%\'%'
  ORDER BY name;
+------------------+
| NAME             |
|------------------|
| John 'alias' Doe |
+------------------+
Os exemplos a seguir usam uma cláusula ESCAPE:
SELECT name
  FROM like_ex
  WHERE name LIKE '%J%h%^_do%' ESCAPE '^'
  ORDER BY name;
+-----------+                                                                   
| NAME      |
|-----------|
| John_down |
+-----------+
Insira mais linhas na tabela like_ex:
INSERT INTO like_ex (name) VALUES 
  ('100 times'),
  ('1000 times'),
  ('100%');
Sem o caractere de escape, o sinal de porcentagem (%) é tratado como um curinga:
SELECT * FROM like_ex WHERE name LIKE '100%'
  ORDER BY 1;
+------------+                                                                  
| NAME       |
|------------|
| 100 times  |
| 100%       |
| 1000 times |
+------------+
Com o caractere de escape, o sinal de porcentagem (%) é tratado como um literal:
SELECT * FROM like_ex WHERE name LIKE '100^%' ESCAPE '^'
  ORDER BY 1;
+------+                                                                        
| NAME |
|------|
| 100% |
+------+
O exemplo a seguir usa uma cláusula ESCAPE na qual a barra invertida é o caractere de escape. Note que a barra invertida em si mesma deve ser evitada tanto na cláusula ESCAPE quanto na expressão:
SELECT * FROM like_ex WHERE name LIKE '100\\%' ESCAPE '\\'
  ORDER BY 1;
+------+                                                                        
| NAME |
|------|
| 100% |
+------+