[ NOT ] RLIKE¶
Executa uma comparação para determinar se uma cadeia de caracteres corresponde ou não a um padrão especificado. Ambas as entradas devem ser expressões de texto.
RLIKE é semelhante à função [ NOT ] 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:
[ NOT ] 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> [ NOT ] 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¶
Retorna um BOOLEAN ou NULL.
Quando RLIKE é especificado, o valor será TRUE se houver uma correspondência. Caso contrário, retorna FALSE.
Quando NOT RLIKE é especificado, o valor será TRUE se não houver correspondência. Caso contrário, retorna FALSE.
Quando RLIKE ou NOT RLIKE é especificado, retorna NULL se algum argumento for NULL.
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¶
Os exemplos a seguir realizam a correspondência de padrões sem distinção entre maiúsculas e minúsculas com curingas:
SELECT * FROM rlike_ex WHERE RLIKE(city, 'san.*', 'i');+---------------+ | CITY | |---------------| | San Francisco | | San Jose | +---------------+SELECT * FROM rlike_ex WHERE NOT RLIKE(city, 'san.*', 'i');+------------+ | CITY | |------------| | Sacramento | +------------+
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 | +-----------------------+
Como alternativa, reescreva as instruções e evite sequências que dependam do caractere de barra invertida.
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 | +---------------+
Exemplos adicionais¶
Para exemplos adicionais de expressões regulares, consulte [ NOT ] REGEXP.