Categorias:

Funções de cadeia de caracteres (expressões regulares)

RLIKE

Retorna True se a entidade corresponder ao padrão especificado. Ambas as entradas devem ser expressões de texto.

RLIKE é semelhante à função LIKE, mas com expressões regulares POSIX estendidas em vez da sintaxe padrão SQL LIKE. Oferece suporte às condições de correspondência mais complexas do que LIKE.

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.

Aliases

REGEXP (2ª sintaxe) , REGEXP_LIKE (1ª sintaxe)

Consulte também: Funções de cadeia de caracteres (expressões regulares)

Sintaxe

-- 1st syntax
RLIKE( <subject> , <pattern> [ , <parameters> ] )

-- 2nd syntax
<subject> RLIKE <pattern>
Copy

Argumentos

Obrigatório:

subject

Sujeito à correspondência.

pattern

Padrão a atender.

Opcional:

parameters

Cadeia de caracteres de um ou mais caracteres que especifica os parâmetros usados para a busca de correspondências. Valores com suporte:

c , i , m , e , s

Para obter mais detalhes, consulte Especificação dos parâmetros para a expressão regular.

Padrão: c

Retornos

O tipo de dados do valor retornado é BOOLEAN.

Notas de uso

Detalhes do agrupamento

Arguments with collation specifications are currently not supported.

Exemplos

Execute os seguintes comandos para configurar os dados para os exemplos neste tópico:

CREATE OR REPLACE TABLE rlike_ex(city varchar(20));
INSERT INTO rlike_ex VALUES ('Sacramento'), ('San Francisco'), ('San Jose'), (null);
Copy

Primeira sintaxe

O exemplo a seguir realiza a correspondência de padrões que não diferenciam maiúsculas e minúsculas com curingas:

SELECT * FROM rlike_ex WHERE RLIKE(city, 'san.*', 'i');

+---------------+
| CITY          |
|---------------|
| San Francisco |
| San Jose      |
+---------------+
Copy

Os exemplos a seguir determinam se uma cadeia de caracteres corresponde ao formato de um número de telefone e de um endereço de e-mail. Nestes exemplos, as expressões regulares são especificadas em cadeia de caracteres entre cifrões para evitar o escape das barras invertidas na expressão regular.

SELECT RLIKE('800-456-7891', $$[2-9]\d{2}-\d{3}-\d{4}$$) AS matches_phone_number;

+----------------------+
| MATCHES_PHONE_NUMBER |
|----------------------|
| True                 |
+----------------------+

SELECT RLIKE('jsmith@email.com',$$\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$$) AS matches_email_address;

+-----------------------+
| MATCHES_EMAIL_ADDRESS |
|-----------------------|
| True                  |
+-----------------------+
Copy

Os exemplos a seguir realizam as mesmas correspondências, mas usam constantes de cadeias de caracteres de aspas simples para especificar as expressões regulares.

Como o exemplo usa constantes de cadeias de caracteres com aspas simples, cada barra invertida deve ser escapada com outra barra invertida.

-- Escape the backslash character (\) in \w and \d

SELECT RLIKE('800-456-7891','[2-9]\\d{2}-\\d{3}-\\d{4}') AS matches_phone_number;

+----------------------+
| MATCHES_PHONE_NUMBER |
|----------------------|
| True                 |
+----------------------+

SELECT RLIKE('jsmith@email.com','\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,3}') AS matches_email_address;

+-----------------------+
| MATCHES_EMAIL_ADDRESS |
|-----------------------|
| True                  |
+-----------------------+

-- Alternatively, rewrite the statements and avoid sequences that rely on the backslash character

SELECT RLIKE('800-456-7891','[2-9][0-9]{2}-[0-9]{3}-[0-9]{4}') AS matches_phone_number;

+----------------------+
| MATCHES_PHONE_NUMBER |
|----------------------|
| True                 |
+----------------------+

SELECT RLIKE('jsmith@email.com','[a-zA-Z_]+@[a-zA-Z_]+?\\.[a-zA-Z]{2,3}') AS matches_email_address;

+-----------------------+
| MATCHES_EMAIL_ADDRESS |
|-----------------------|
| True                  |
+-----------------------+
Copy

Segunda sintaxe

Correspondência de padrões que diferencia maiúsculas e minúsculas:

SELECT * FROM rlike_ex WHERE city RLIKE 'San.* [fF].*';

+---------------+
| CITY          |
|---------------|
| San Francisco |
+---------------+
Copy

Exemplos adicionais

Para exemplos adicionais de expressões regulares, consulte REGEXP.