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 Uso do 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>
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¶
A função ancora implicitamente um padrão em ambas as extremidades (isto é,
''
torna-se automaticamente'^$'
, e'ABC'
torna-se automaticamente'^ABC$'
). Para combinar qualquer cadeia de caracteres começando com ABC, o padrão seria'ABC.*'
.O caractere de barra invertida (
\
) é o caractere de escape. Para obter mais informações, consulte Especificação de expressões regulares em constantes de cadeias de caracteres entre aspas simples.Para obter mais notas de uso, consulte o Notas de uso geral para funções de expressão regular.
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);
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 | +---------------+
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 | +-----------------------+
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 | +-----------------------+
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 | +---------------+