A função REGEXP_CONTAINS verifica se uma string contém conteúdo correspondente a uma string ou expressão regular especificada.
Sintaxe
BOOLEAN REGEXP_CONTAINS(STRING <source>, STRING <pattern>)
Parâmetros
source: Obrigatório. Valor do tipo STRING. Especifica a string a ser pesquisada.
-
pattern: Obrigatório. Constante ou expressão regular do tipo STRING.
NotaUse
^(início da linha) e$(fim da linha) para buscar uma correspondência exata. Como os operadores em expressões regulares têm precedência, coloque todo o conteúdo entre^e$entre parênteses para garantir a lógica correta de correspondência.
Valor de retorno
Retorna um valor BOOLEAN. Aplicam-se as seguintes regras:
Se o valor de source corresponder ao pattern, a função retorna
true. Caso contrário, retornafalse.A função retorna um erro se source ou pattern não for uma
STRINGou for inválido.Se source ou pattern for NULL, a função retorna NULL.
Se o pattern for uma string vazia, a função retorna true.
Exemplos
-
Exemplo 1: Validar um endereço de e-mail.
SELECT 'foo@example.com' AS email, REGEXP_CONTAINS('foo@example.com', '@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+') AS is_valid;Resultado retornado:
+-----------------+----------+ | email | is_valid | +-----------------+----------+ | foo@example.com | true | +-----------------+----------+ -
Exemplo 2: Usar
^(início da linha) e$(fim da linha) para buscar uma correspondência exata.Como os operadores em expressões regulares têm precedência, coloque todo o conteúdo entre
^e$entre parênteses para garantir a lógica correta de correspondência.-
A expressão regular produz o resultado correto sem o uso de parênteses.
SELECT 'a@foo.com' AS email, REGEXP_CONTAINS('a@foo.com', '^([\\w.+-]+@foo\\.com|[\\w.+-]+@bar\\.org)$') AS valid_email_address, REGEXP_CONTAINS('a@foo.com', '^[\\w.+-]+@foo\\.com|[\\w.+-]+@bar\\.org$') AS without_parentheses;Resultado retornado:
+------------+---------------------+---------------------+ | email | valid_email_address | without_parentheses | +------------+---------------------+---------------------+ | a@foo.com | true | true | +------------+---------------------+---------------------+ -
A ausência de parênteses na expressão regular afeta a saída.
SELECT '!b@bar.org' AS email, REGEXP_CONTAINS('!b@bar.org', '^([\\w.+-]+@foo\\.com|[\\w.+-]+@bar\\.org)$') AS valid_email_address, REGEXP_CONTAINS('!b@bar.org', '^[\\w.+-]+@foo\\.com|[\\w.+-]+@bar\\.org$') AS without_parentheses;Resultado retornado:
+------------+---------------------+---------------------+ | email | valid_email_address | without_parentheses | +------------+---------------------+---------------------+ | !b@bar.org | false | true | +------------+---------------------+---------------------+
-
-
Exemplo 3: Usar uma string vazia como padrão.
--Returns true. WITH dummy AS(SELECT '' AS PATTERN) SELECT REGEXP_CONTAINS('ABC',PATTERN) FROM dummy;
Funções relacionadas
A REGEXP_CONTAINS é uma função de string. Para mais informações sobre funções de pesquisa de strings ou transformação de formatos de string, consulte String Functions Overview.