REGEXP_COUNT¶
Retorna o número de vezes que um padrão ocorre em uma cadeia de caracteres.
Consulte também Funções de cadeia de caracteres (expressões regulares).
Sintaxe¶
REGEXP_COUNT( <subject> , <pattern> [ , <position> , <parameters> ] )
Argumentos¶
Obrigatório:
subject
A cadeia de caracteres a ser procurada por correspondências.
pattern
Padrão a atender.
Para diretrizes sobre como especificar padrões, consulte Funções de cadeia de caracteres (expressões regulares).
Opcional:
position
Número de caracteres desde o início da cadeia de caracteres onde a função começa a procurar correspondências.
Padrão:
1
(a busca por uma correspondência começa no primeiro caractere à esquerda)parameters
Cadeia de caracteres de um ou mais caracteres que especifica os parâmetros usados para a busca de correspondências. Valores com suporte:
Parâmetro
Descrição
c
Correspondência com distinção entre maiúsculas e minúsculas
i
Correspondência sem distinção entre maiúsculas e minúsculas
m
Modo multilinha
e
Extração de subcorrespondências
s
O caractere curinga POSIX
.
corresponde a\n
Padrão:
c
Para obter mais detalhes, consulte Especificação dos parâmetros para a expressão regular.
Retornos¶
Retorna um valor do tipo NUMBER. Retorna NULL se algum argumento for NULL.
Notas de uso¶
Consulte Notas de uso geral para funções de expressão regular.
Detalhes do agrupamento¶
Arguments with collation specifications are currently not supported.
Exemplos¶
O seguinte exemplo conta as ocorrências da palavra was
. A correspondência começa no primeiro caractere da cadeia de caracteres:
SELECT REGEXP_COUNT('It was the best of times, it was the worst of times',
'\\bwas\\b',
1) AS result;
+--------+
| RESULT |
|--------|
| 2 |
+--------+
O exemplo seguinte ilustra ocorrências que se sobrepõem: Criar uma tabela e inserir dados:
CREATE OR REPLACE TABLE overlap (id NUMBER, a STRING);
INSERT INTO overlap VALUES (1,',abc,def,ghi,jkl,');
INSERT INTO overlap VALUES (2,',abc,,def,,ghi,,jkl,');
SELECT * FROM overlap;
+----+----------------------+
| ID | A |
|----+----------------------|
| 1 | ,abc,def,ghi,jkl, |
| 2 | ,abc,,def,,ghi,,jkl, |
+----+----------------------+
Execute uma consulta que use REGEXP_COUNT para contar o número de vezes que o seguinte padrão é encontrado em cada linha: um sinal de pontuação seguido por dígitos e letras, seguido por um sinal de pontuação.
SELECT id,
REGEXP_COUNT(a,
'[[:punct:]][[:alnum:]]+[[:punct:]]',
1,
'i') AS result
FROM overlap;
+----+--------+
| ID | RESULT |
|----+--------|
| 1 | 2 |
| 2 | 4 |
+----+--------+