Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2025 (17.x)
Azure SQL Database
AzureSQL Managed Instance
SQL database in 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 consultas. Ele oferece uma maneira flexível e eficiente de pesquisar, manipular e lidar com operações de dados complexas.
Note
As expressões regulares estão disponíveis na Instância Gerenciada SQL do Azure com a política de atualizaçãoSQL Server 2025 ou Always-up-to-date.
Esta implementação de expressão regular é baseada na biblioteca de expressões regulares RE2. Para obter mais informações, visite RE2 Regular Expression Syntax.
Funções regex suportadas:
| Function | Description |
|---|---|
| REGEXP_LIKE | Retorna um valor booleano 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, onde a ocorrência do padrão regex foi encontrada. |
| REGEXP_SUBSTR | Extrai partes de uma cadeia de caracteres com base em um padrão de expressão regular. Retorna a Nona ocorrência de uma substring que corresponde ao padrão regex. |
| REGEXP_INSTR | Retorna a posição inicial ou final da substring 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 substring(s) capturada(s) que correspondem a 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 divididas, delimitadas pelo padrão regex. Se não houver correspondência com o padrão, a função retornará a cadeia de caracteres. |
As expressões regulares podem ser compostas por caracteres literais e metacaracteres, que têm significados e funções especiais.
Uma expressão regular básica é um único caractere literal. Os caracteres correspondem a si mesmos, exceto pelos metacaracteres. Os metacaracteres incluem *, +, ?, (, )ou |. Para combinar com um metapersonagem, escape-o com uma barra invertida. Por exemplo, \* corresponde ao caractere asterisco literal (*).
Duas expressões regulares podem ser alteradas ou concatenadas para formar uma nova expressão regular: se e1 corresponde a s e e2 corresponde a t, então e1 | e2 corresponde a s ou t, e e1e2 corresponde a st.
Os metacaracteres *, +e ? são operadores de repetição: e1* corresponde a uma sequência de zero ou mais cadeias (possivelmente diferentes), cada uma das quais corresponde a e1; e1 + corresponde a uma ou mais; e1? corresponde a zero ou um.
A precedência do operador, da ligação mais fraca para a mais forte, é a seguinte: - Alternância - 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 por RE2, consulte
RE2 Sintaxe de Expressão Regular. Esta página também lista algumas sintaxe aceitas por PCRE, Perl e Vim.
Caracteres de expressão regular aceitos
Expressões de caractere único
| Tipos de expressões de caractere único | Examples |
|---|---|
| qualquer carácter, possivelmente incluindo nova linha (s=true) | . |
| character class | [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 de 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, recomenda-se optar por mais |
x? |
zero ou um x, prefira um |
x{n,m} |
n ou n+1 ou ... ou m x, escolha preferencialmente mais |
x{n,} |
n ou mais x, prefira mais |
x{n} |
exatamente n x |
x*? |
zero ou mais x, preferir o menor número possível |
x+? |
um ou mais x, prefira menos |
x?? |
zero ou um x, prefira 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 formas de contagem x{n,m}, x{n,} e x{n} rejeitam formas que criam uma contagem de repetição mínima ou máxima acima de 1.000. As repetições ilimitadas não estão sujeitas a esta restrição.
Classes de caracteres Perl
A tabela a seguir lista as classes de caracteres Perl atualmente suportadas.
| Classes de caracteres Perl (todas somente ASCII) | Description |
|---|---|
\d |
algarismos ( [0-9]) |
\D |
não dígitos ( [^0-9]) |
\s |
espaço em branco ( [\t\n\f\r ]) |
\S |
não é um espaço em branco ( [^\t\n\f\r ]) |
\w |
caracteres de palavras ( [0-9A-Za-z_]) |
\W |
caracteres não pertencentes a palavras ( [^0-9A-Za-z_]) |
Classes de caracteres ASCII
A tabela a seguir lista as classes de caracteres ASCII atualmente suportadas.
| Classes de caracteres ASCII | Description |
|---|---|
[[:alnum:]] |
alfanumérico ( [0-9A-Za-z]) |
[[:alpha:]] |
alfabética ( [A-Za-z]) |
[[:ascii:]] |
ASCII ( [\x00-\x7F]) |
[[:blank:]] |
em branco ( [\t ]) |
[[:cntrl:]] |
controlo ( [\x00-\x1F\x7F]) |
[[:digit:]] |
algarismos ( [0-9]) |
[[:graph:]] |
gráfico ( [!-~] ou [A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~]) |
[[:lower:]] |
minúsculas ( [a-z]) |
[[:print:]] |
imprimível ( [ -~] ou [ [:graph:]]) |
[[:punct:]] |
pontuação ( [!-/:-@[-\``{-~]) |
[[:space:]] |
espaço em branco ( [\t\n\v\f\r ]) |
[[:upper:]] |
maiúsculas ( [A-Z]) |
[[:word:]] |
caracteres de palavras ( [0-9A-Za-z_]) |
[[:xdigit:]] |
dígito hexadecimal ( [0-9A-Fa-f]) |
Caracteres literais
- Letters
- Numbers
- Symbols
Strings vazias
| Strings 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, \A ou \z do outro) |
\B |
Não no limite de palavras ASCII |
\z |
No final do texto |
Groupings
O grupo de captura (subexpressão) do padrão com:
| Grouping | Description |
|---|---|
(re) |
Grupo de captura numerado (subcorrespondência) |
(?P<name>re) |
Grupo de captura nomeado e numerado (subconjunto) |
(?:re) |
Grupo não capturador |
(?<flags>) |
Definido <flags> dentro do grupo atual; não capturador |
(?<flags>:re) |
Definir <flags> durante re; grupo não capturante |
Flags
Use sinalizadores para modificar o comportamento da expressão. Por exemplo:
| Flag | Description |
|---|---|
i |
Não distingue maiúsculas de minúsculas (padrão false) |
m |
Modo multi-linha: ^ e $ correspondem ao início/fim de linha, além do início/fim de texto (padrão false) |
s |
Deixar . corresponder \n (padrão false) |
c |
Sensível a maiúsculas e minúsculas (padrão true) |
Esta implementação suporta o padrão POSIX para expressões regulares seguindo o RE2 e tem suporte para a variante PCRE/PCRE2 da sintaxe de expressões regulares, que é compatível com a maioria dos motores e ferramentas de expressão regular modernos. Existem diferentes sabores de expressões regulares, como POSIX, ANSI, Perl e PCRE, que têm sintaxe e características diferentes. Para obter mais informações sobre construções suportadas e comportamento 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 agrupamentos SQL para comparações linguísticas. Esse comportamento é intencional e consistente com a maioria dos mecanismos de expressão regular, pois a correspondência é feita com base no padrão e nas propriedades de caracteres Unicode, e não em regras de ordenação. Como resultado, isso pode levar a diferenças no comportamento quando comparado a outras funções de comparação de cadeia de caracteres como LIKE, especialmente em colunas indexadas com agrupamentos específicos de idioma.
Requirements
- Uma ferramenta de cliente SQL, como Azure Data Studio, SQL Server Management Studio ou Visual Studio Code.
- Um conhecimento básico de sintaxe SQL e consultas.
- Uma compreensão básica da sintaxe e conceitos de expressões regulares.
FAQ
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
Os seguintes itens não são atualmente suportados:
- Os tipos de dados LOB (varchar(max) ou nvarchar(max)) são suportados
string_expressionsnas seguintes funções intrínsecas:REGEXP_LIKEREGEXP_COUNTREGEXP_INSTR
No entanto, esse suporte é limitado a tamanhos de entrada de até 2 MB.
Os tipos de dados LOB não são suportados nas seguintes funções regulares:
REGEXP_REPLACEREGEXP_SUBSTRREGEXP_MATCHESREGEXP_SPLIT_TO_TABLE
As funções de expressão regular não são suportadas em procedimentos armazenados compilados nativamente.