Categorias:

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

LIKE

Permite a correspondência, com distinção entre maiúsculas e minúsculas, de cadeias de caracteres com base na comparação com um padrão. Para correspondência que não diferencia maiúsculas e minúsculas, use ILIKE em seu lugar.

Se a cadeia de caracteres de assunto corresponder ao padrão, é retornada a cadeia de caracteres de assunto.

LIKE ILIKE e RLIKE realizam todos operações similares; entretanto, RLIKE usa sintaxe POSIX EXE (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

ILIKE , RLIKE , LIKE ANY

Sintaxe

<subject> LIKE <pattern> [ ESCAPE <escape> ]

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

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

O tipo de dados do valor retornado é o mesmo que o tipo de dados do subject.

Notas de uso

  • 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 LIKE 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 %.

  • 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.

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

  • Se você usar a barra invertida como um caractere de escape, então você deve especificar a barra invertida 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 '\\';
    
    Copy

    Para exemplos de uso de caracteres de escape, e em particular a barra invertida como um caractere de escape, consulte Exemplos.

Detalhes do agrupamento

Arguments with collation specifications are currently not supported.

Exemplos

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

CREATE OR REPLACE TABLE like_ex(subject varchar(20));
INSERT INTO like_ex VALUES
    ('John  Dddoe'),
    ('Joe   Doe'),
    ('John_down'),
    ('Joe down'),
    ('Elaine'),
    (''),    -- empty string
    (null);
Copy
SELECT subject
    FROM like_ex
    WHERE subject LIKE '%Jo%oe%'
    ORDER BY subject;
+-------------+
| SUBJECT     |
|-------------|
| Joe   Doe   |
| John  Dddoe |
+-------------+
Copy
SELECT subject
    FROM like_ex
    WHERE subject LIKE '%J%h%^_do%' ESCAPE '^'
    ORDER BY subject;
+-----------+
| SUBJECT   |
|-----------|
| John_down |
+-----------+
Copy
SELECT subject
    FROM like_ex
    WHERE subject NOT LIKE 'John%'
    ORDER BY subject;
+-----------+
| SUBJECT   |
|-----------|
|           |
| Elaine    |
| Joe   Doe |
| Joe down  |
+-----------+
Copy
SELECT subject
    FROM like_ex
    WHERE subject NOT LIKE ''
    ORDER BY subject;
+-------------+
| SUBJECT     |
|-------------|
| Elaine      |
| Joe   Doe   |
| Joe down    |
| John  Dddoe |
| John_down   |
+-------------+
Copy

O exemplo a seguir usa uma cláusula ESCAPE:

INSERT INTO like_ex (subject) VALUES 
    ('100 times'),
    ('1000 times'),
    ('100%');
Copy

Sem o caractere de escape, o sinal de porcentagem (“%”) é tratado como um curinga:

SELECT * FROM like_ex WHERE subject LIKE '100%'
    ORDER BY 1;
+------------+
| SUBJECT    |
|------------|
| 100 times  |
| 100%       |
| 1000 times |
+------------+
Copy

Com o caractere de escape, o sinal de porcentagem (‘%’) é tratado como um literal:

SELECT * FROM like_ex WHERE subject LIKE '100^%' ESCAPE '^'
    ORDER BY 1;
+---------+
| SUBJECT |
|---------|
| 100%    |
+---------+
Copy

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 subject LIKE '100\\%' ESCAPE '\\'
    ORDER BY 1;
+---------+
| SUBJECT |
|---------|
| 100%    |
+---------+
Copy