Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2025 (17.x)
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
banco de dados SQL no Microsoft Fabric
Este artigo apresenta expressões regulares para o SQL Server.
Uma expressão regular, ou regex, é uma sequência de caracteres que define um padrão de pesquisa para texto. O Regex é comumente usado para uma variedade de tarefas, incluindo correspondência de padrões, validação de dados, transformação de dados e consulta. Ele oferece uma maneira flexível e eficiente de pesquisar, manipular e lidar com operações de dados complexas.
Note
Expressões regulares estão disponíveis na Instância Gerenciada de SQL do Azure com a política de atualização do SQL Server 2025 ou Always-up-to-date.
Essa implementação da expressão regular baseia-se na biblioteca de expressões regulares RE2. Para obter mais informações, visite a Sintaxe de Expressão Regular RE2.
Funções regex com suporte:
| Function | Description |
|---|---|
| REGEXP_LIKE | Retorna um valor booliano que indica se a entrada de texto corresponde ao padrão regex. |
| REGEXP_REPLACE | Retorna uma cadeia de caracteres de origem modificada substituída por uma cadeia de caracteres de substituição, na qual foi encontrada a ocorrência do padrão regex. |
| REGEXP_SUBSTR | Extrai partes de uma cadeia de caracteres com base em um padrão de expressão regular. Retorna a ocorrência N de uma subsequência que corresponde ao padrão regex. |
| REGEXP_INSTR | Retorna a posição inicial ou final da subsequência correspondente, dependendo da opção fornecida. |
| REGEXP_COUNT | Retorna uma contagem do número de vezes que o padrão regex ocorre em uma cadeia de caracteres. |
| REGEXP_MATCHES | Retorna uma tabela de subsequências capturadas que correspondem um padrão de expressão regular a uma cadeia de caracteres. Se nenhuma correspondência for encontrada, a função não retornará nenhuma linha. |
| REGEXP_SPLIT_TO_TABLE | Retorna uma tabela de cadeias de caracteres dividida, delimitada pelo padrão regex. Se não há correspondência com o padrão, a função retorna a cadeia de caracteres. |
Expressões regulares podem ser compostas por caracteres literais e metacaractadores, que têm significados e funções especiais.
Uma expressão regular básica é um único caractere literal. Os caracteres correspondem a eles mesmos, exceto pelos metacaracteres. Metacaracters incluem *, +, , ?, (, )ou |. Para corresponder a um metacaracter, escape-o com uma barra invertida. Por exemplo, \* corresponde ao caractere literal asterisco (*).
Duas expressões regulares podem ser alteradas ou concatenadas para formar uma nova expressão regular: se e1 corresponder a s e e2 corresponder a t, então e1 | e2 corresponderá a s ou a t, e e1e2 corresponderá a st.
Os metacaracters *, +e ? são operadores de repetição: e1* corresponde a uma sequência de zero ou mais cadeias de caracteres (possivelmente diferentes), cada uma das quais corresponde a e1; e1 + corresponde a uma ou mais; e1? corresponde a zero ou um.
A precedência dos operadores, da associação mais fraca à mais forte, é a seguinte: - Alternação - Concatenação - Operadores de repetição
Parênteses explícitos podem ser usados para forçar diferentes significados, como em expressões aritméticas. Alguns exemplos: ab|cd é equivalente a (ab)|(cd) ; ab é equivalente a a(b).
Para obter mais informações sobre a sintaxe de expressão regular aceita pelo RE2, consulte
Sintaxe de expressão regular RE2. Esta página também lista algumas sintaxes aceitas pelo PCRE, Perl e Vim.
Caracteres de expressão regular aceitos
Expressões de caractere único
| Variantes de expressões de caractere único | Examples |
|---|---|
| qualquer caractere, possivelmente incluindo o de nova linha (s=true) | . |
| classe de caracteres | [xyz] |
| classe de caractere negada | [^xyz] |
| Classes de caracteres Perl | \d |
| classe de caractere Perl negada | \D |
| Classes de caracteres ASCII | [[:alpha:]] |
| classe de caractere ASCII negada | [[:^alpha:]] |
| classe de caractere Unicode (nome de uma letra) | \pN |
| classe de caractere Unicode | \p{Greek} |
| classe de caractere Unicode negada (nome de uma letra) | \PN |
| classe de caractere Unicode negada | \P{Greek} |
| Compósitos | Description |
|---|---|
xy |
x seguido por y |
x | y |
x ou y (prefira x) |
| Repetições | Description |
|---|---|
x* |
zero ou mais x, de preferência mais |
x+ |
um ou mais x, dê preferência a mais |
x? |
zero ou um x, prefira um |
x{n,m} |
n ou n+1 ou... ou m x, prefira o maior valor |
x{n,} |
n ou mais x, prefira o valor maior |
x{n} |
exatamente n x |
x*? |
zero ou mais x, preferencialmente menos |
x+? |
um ou mais x, prefira menos |
x?? |
zero ou um x, preferencialmente zero |
x{n,m}? |
n ou n+1 ou... ou m x, prefira menos |
x{n,}? |
n ou mais x, prefira menos |
x{n}? |
exatamente n x |
Note
Os formulários x{n,m}, x{n,} e x{n} rejeitam formulários que criam uma contagem de repetição mínima ou máxima acima de 1.000. Repetições ilimitadas não estão sujeitas a essa restrição.
Classes de caracteres Perl
A tabela a seguir lista as classes de caracteres Perl com suporte no momento.
| Classes de caractere Perl (todas somente ASCII) | Description |
|---|---|
\d |
dígitos ( [0-9]) |
\D |
não são dígitos ( [^0-9]) |
\s |
espaço em branco ( [\t\n\f\r ]) |
\S |
não é espaço em branco ( [^\t\n\f\r ]) |
\w |
caracteres de palavra ( [0-9A-Za-z_]) |
\W |
caracteres não alfabéticos ( [^0-9A-Za-z_]) |
Classes de caractere ASCII
A tabela a seguir lista as classes de caracteres ASCII com suporte no momento.
| Classes de caractere ASCII | Description |
|---|---|
[[:alnum:]] |
alfanumérico ( [0-9A-Za-z]) |
[[:alpha:]] |
alfabético ( [A-Za-z]) |
[[:ascii:]] |
ASCII ( [\x00-\x7F]) |
[[:blank:]] |
em branco ( [\t ]) |
[[:cntrl:]] |
controle ( [\x00-\x1F\x7F]) |
[[:digit:]] |
dígitos ( [0-9]) |
[[:graph:]] |
gráfico ( [!-~] ou [A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~]) |
[[:lower:]] |
minúscula ( [a-z]) |
[[:print:]] |
imprimível ( [ -~] ou [ [:graph:]]) |
[[:punct:]] |
pontuação ( [!-/:-@[-\``{-~]) |
[[:space:]] |
espaço em branco ( [\t\n\v\f\r ]) |
[[:upper:]] |
maiúscula ( [A-Z]) |
[[:word:]] |
caracteres de palavra ( [0-9A-Za-z_]) |
[[:xdigit:]] |
dígito hex ( [0-9A-Fa-f]) |
Caracteres literais
- Letters
- Numbers
- Symbols
Cadeias de caracteres vazias
| Cadeias de caracteres vazias | Description |
|---|---|
^ |
No início do texto ou da linha (m=true) |
$ |
No final do texto (como \z, não \Z) ou linha (m=true) |
\A |
No início do texto |
\b |
No limite da palavra ASCII (\w de um lado e \W, \Aou \z do outro) |
\B |
Fora do limite de palavra ASCII |
\z |
Ao final do texto |
Groupings
O grupo de captura (subexpressão) do padrão com:
| Grouping | Description |
|---|---|
(re) |
Grupo de captura numerada (submatch) |
(?P<name>re) |
Grupo de captura nomeado e numerado (subpartida) |
(?:re) |
Grupo de não captura |
(?<flags>) |
Definir <flags> dentro do grupo atual; sem captura |
(?<flags>:re) |
Definir <flags> durante re; agrupamento sem captura |
Flags
Use sinalizadores para modificar o comportamento da expressão. Por exemplo:
| Flag | Description |
|---|---|
i |
Não diferencia maiúsculas de minúsculas (padrão false) |
m |
Modo de várias linhas: ^ e $ correspondem ao início/fim de linha, além do início/fim de texto (padrão false) |
s |
Permitir . correspondência \n (padrão false) |
c |
Diferencia maiúsculas de minúsculas (padrão true) |
Essa implementação dá suporte ao padrão POSIX de expressões regulares após RE2 e tem suporte para o sabor PCRE/PCRE2 da sintaxe de expressões regulares, que é compatível com a maioria das ferramentas e mecanismos de expressão regular modernos. Há diferentes tipos de expressões regulares, como POSIX, ANSI, Perl e PCRE, que têm sintaxe e recursos diferentes. Para obter mais informações sobre constructos e comportamentos com suporte do mecanismo regex subjacente, consulte RE2, uma biblioteca de expressões regulares.
Note
A correspondência de expressões regulares no SQL Server não respeita ordenações SQL para comparações linguísticas. Esse comportamento é intencional e consistente com a maioria dos mecanismos de expressões regulares, pois a correspondência é baseada nas propriedades padrão e de caracteres Unicode em vez de regras de ordenação. Como resultado, isso pode levar a diferenças de comportamento quando comparado a outras funções de comparação de cadeia de caracteres, como LIKE, especialmente em colunas indexadas com ordenações específicas de linguagem.
Requirements
- Uma ferramenta de cliente SQL, como o Azure Data Studio, o SQL Server Management Studio ou o Visual Studio Code.
- Um conhecimento básico da sintaxe do SQL e das consultas.
- Uma compreensão básica da sintaxe de expressão regular e conceitos.
perguntas frequentes
Qual é o impacto no desempenho do uso do regex?
As consultas Regex podem ter um impacto no desempenho dependendo da complexidade do padrão regex, do tamanho dos dados de texto e do número de linhas envolvidas. Você pode usar o plano de execução e as estatísticas para monitorar e otimizar o desempenho de suas consultas regex.
Limitações
No momento, não há suporte para os seguintes itens:
- Os tipos de dados LOB (varchar(max) ou nvarchar(max)) têm
string_expressionssuporte nas seguintes funções intrínsecas:REGEXP_LIKEREGEXP_COUNTREGEXP_INSTR
No entanto, esse suporte é limitado a tamanhos de entrada de até 2 MB.
Não há suporte para tipos de dados LOB nas seguintes funções regex:
REGEXP_REPLACEREGEXP_SUBSTRREGEXP_MATCHESREGEXP_SPLIT_TO_TABLE
Não há suporte para funções de expressão regular em procedimentos armazenados compilados nativamente.