Todos os produtos
Search
Central de documentação

AnalyticDB:Funções regulares

Última atualização: Jun 27, 2026

O AnalyticDB for MySQL oferece suporte às seguintes funções de expressão regular para correspondência de padrões, extração e substituição em consultas SQL.

Pré-requisitos

Antes de começar, verifique se:

  • A versão secundária do mecanismo do cluster AnalyticDB for MySQL é 3.1.5.10 ou posterior

Nota

Para verificar a versão secundária do mecanismo, consulte Como visualizo a versão de um cluster do AnalyticDB for MySQL?

REGEXP_INSTR

regexp_instr(source, pattern[, position[, occurrence[, option]]])

Retorna um número inteiro que indica a posição inicial ou final da primeira (ou enésima) substring em source correspondente ao pattern. Retorna 0 se não houver correspondência.

Parâmetros

Obrigatórios:

Parâmetro

Tipo

Descrição

source

VARCHAR

String a ser pesquisada.

pattern

Expressão regular para correspondência.

Opcionais:

Parâmetro

Tipo

Padrão

Descrição

position

BIGINT

1

Posição do caractere em source onde a busca começa.

occurrence

BIGINT

1

Ocorrência da correspondência a retornar.

option

BIGINT

0

Define se o retorno é a posição inicial da correspondência (0) ou a posição imediatamente após o fim dela (1).

Valor de retorno

Retorna BIGINT. Se não houver correspondência, retorna 0.

Exemplos

Retornar a posição inicial da primeira correspondência

SELECT REGEXP_INSTR('dog cat dog', 'dog') as res;
+-----+
| res |
+-----+
|   1 |
+-----+

Retornar a posição inicial da segunda correspondência

SELECT REGEXP_INSTR('dog cat dog', 'dog', 1, 2) as res;
+-----+
| res |
+-----+
|   9 |
+-----+

Retornar a posição após o fim da primeira correspondência

SELECT REGEXP_INSTR('dog cat dog', 'dog', 1, 1, 1) as res;
+-----+
| res |
+-----+
|   4 |
+-----+

REGEXP_MATCHES

regexp_matches(source, pattern[, flag])

Retorna um ARRAY(ARRAY(VARCHAR)) com todas as substrings em source correspondentes ao pattern. Se não houver correspondência, retorna um array vazio.

  • Sem a flag g: retorna apenas a primeira correspondência.

  • Com a flag g: retorna todas as correspondências.

  • Se o pattern contiver grupos de captura, as substrings correspondentes de cada grupo serão retornadas como arrays aninhados. Caso contrário, retorna a correspondência completa.

Nota

Para obter uma única string correspondente em vez de um array, use REGEXP_SUBSTR.

Parâmetros

Obrigatórios:

Parâmetro

Tipo

Descrição

source

VARCHAR

String a ser pesquisada.

pattern

Expressão regular para correspondência.

Opcionais:

Parâmetro

Tipo

Descrição

flag

VARCHAR

Um ou mais caracteres que controlam o comportamento da correspondência. Use g para retornar todas as correspondências em vez de apenas a primeira.

Valor de retorno

Retorna ARRAY(ARRAY(VARCHAR)). Se não houver correspondência, retorna um array vazio.

Exemplos

Correspondência com grupos de captura (apenas a primeira)

SELECT regexp_matches('foobarbequebaz', '(bar)(beque)');
+---------------------+
| regexp_matches      |
+---------------------+
| [["bar","beque"]]   |

Correspondência sem grupos de captura

SELECT regexp_matches('foobarbequebaz', 'barbeque');
+---------------------+
| regexp_matches      |
+---------------------+
| [["barbeque"]]      |

Corresponder a todas as ocorrências usando a flag g

SELECT regexp_matches('foobarbequebazilbarfbonk', '(b[^b]+)(b[^b]+)', 'g');
+------------------------------------------+
| regexp_matches                           |
+------------------------------------------+
| [["bar","beque"], ["bazil","barf"]]      |

REGEXP_REPLACE

regexp_replace(source, pattern, replacement[, position[, occurrence]])

Substitui as substrings em source correspondentes ao pattern por replacement. Por padrão, substitui todas as correspondências a partir do primeiro caractere. Se não houver correspondência, retorna a string original.

Parâmetros

Obrigatórios:

Parâmetro

Tipo

Descrição

source

VARCHAR

String a ser pesquisada.

pattern

Expressão regular para correspondência.

replacement

VARCHAR

String de substituição para cada correspondência.

Opcionais:

Parâmetro

Tipo

Padrão

Descrição

position

BIGINT

1

Posição do caractere em source onde a busca começa.

occurrence

BIGINT

0

Ocorrência a substituir. O valor 0 substitui todas as correspondências; um número inteiro positivo substitui apenas aquela ocorrência específica.

Valor de retorno

Retorna VARCHAR. Se não houver correspondência, retorna a string original.

Exemplos

Substituir todas as correspondências

SELECT REGEXP_REPLACE('abc def ghi', '[a-z]+', 'X') as res;
+-------+
| res   |
+-------+
| X X X |
+-------+

Substituir apenas a terceira correspondência

SELECT REGEXP_REPLACE('abc def ghi', '[a-z]+', 'X', 1, 3) as res;
+-----------+
| res       |
+-----------+
| abc def X |
+-----------+

REGEXP_SUBSTR

regexp_substr(source, pattern[, position[, occurrence]])

Retorna a substring em source correspondente ao pattern. Retorna NULL se não houver correspondência.

Parâmetros

Obrigatórios:

Parâmetro

Tipo

Descrição

source

VARCHAR

String a ser pesquisada.

pattern

Expressão regular para correspondência.

Opcionais:

Parâmetro

Tipo

Padrão

Descrição

position

BIGINT

1

Posição do caractere em source onde a busca começa.

occurrence

BIGINT

1

Ocorrência da correspondência a retornar.

Valor de retorno

Retorna VARCHAR. Se não houver correspondência, retorna NULL.

Exemplos

Retornar a terceira correspondência

SELECT REGEXP_SUBSTR('abc def ghi', '[a-z]+', 1, 3) as res;
+------+
| res  |
+------+
| ghi  |
+------+

Retornar a primeira correspondência (comportamento padrão)

SELECT REGEXP_SUBSTR('abc def ghi', '[a-z]+') as res;
+------+
| res  |
+------+
| abc  |
+------+