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 AzureBanco de DadosSQL do Azure Banco de Dados SQL banco de dados SQL do Banco de Dados SQL do Azure
banco de dados SQL no Microsoft Fabric
Indica se o padrão de expressão regular corresponde em uma cadeia de caracteres.
REGEXP_LIKE
(
string_expression,
pattern_expression [ , flags ]
)
REGEXP_LIKE requer o nível de compatibilidade do banco de dados 170 e superior. Se o nível de compatibilidade do banco de dados for inferior a 170, REGEXP_LIKE não estará disponível.
Outras funções escalares de expressão regular estão disponíveis em todos os níveis de compatibilidade.
Você pode verificar o nível de compatibilidade na sys.databases exibição ou nas propriedades do banco de dados. Você pode alterar o nível de compatibilidade de um banco de dados com o seguinte comando:
ALTER DATABASE [DatabaseName]
SET COMPATIBILITY_LEVEL = 170;
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.
Arguments
string_expression
Uma expressão de uma cadeia de caracteres.
Pode ser uma constante, variável ou coluna de cadeia de caracteres.
Tipos de dados: char, nchar, varcharou nvarchar.
Note
As REGEXP_LIKEfunções e REGEXP_COUNTREGEXP_INSTR funções dão suporte a tipos LOB (varchar(max) e nvarchar(max)) até 2 MB para o parâmetro string_expression.
pattern_expression
Padrão de expressão regular a ser correspondido. Normalmente, um literal de texto.
Tipos de dados: char, nchar, varcharou nvarchar. pattern_expression dá suporte a um comprimento máximo de caractere de 8.000 bytes.
flags
Um ou mais caracteres que especificam os modificadores usados para pesquisar correspondências. O tipo é varchar ou char, com um máximo de 30 caracteres.
Por exemplo, ims. O padrão é c. Se uma cadeia de caracteres vazia (' ') for fornecida, ela será tratada como o valor padrão ('c'). Forneça c ou qualquer outra expressão de caractere. Se o sinalizador contiver vários caracteres contraditórios, o SQL Server usará o último caractere.
Por exemplo, se você especificar ic o regex retornará correspondência que diferencia maiúsculas de minúsculas.
Se o valor contiver um caractere diferente daqueles listados em valores de sinalizador com suporte, a consulta retornará um erro como o exemplo a seguir:
Invalid flag provided. '<invalid character>' are not valid flags. Only {c,i,s,m} flags are valid.
Valores de sinalizador com suporte
| Flag | Description |
|---|---|
i |
Não diferencia maiúsculas de minúsculas (padrão false) |
m |
Modo de várias linhas: ^ e $ corresponder à linha de início/término, além do texto de início/término (padrão false) |
s |
Permitir . correspondência \n (padrão false) |
c |
Diferencia maiúsculas de minúsculas (padrão true) |
Valor de retorno
Valor booliano.
true ou false.
Remarks
Estimativa de cardinalidade
Para aumentar a precisão da estimativa de cardinalidade da REGEXP_LIKE função, use as ASSUME_FIXED_MIN_SELECTIVITY_FOR_REGEXP dicas e ASSUME_FIXED_MAX_SELECTIVITY_FOR_REGEXP query para ajustar os valores padrão de seletividade. Para obter mais informações, consulte Dicas de consulta.
Essas dicas de consulta também se integram com o feedback de estimativa de cardinalidade (CE). O modelo de feedback CE identifica automaticamente consultas que usam a REGEXP_LIKE função onde há uma diferença significativa entre a contagem de linhas estimada e a real. Em seguida, ele aplica a dica de seletividade apropriada no nível de consulta para melhorar a qualidade do plano sem a necessidade de entrada manual.
Para desabilitar o comportamento de comentários automáticos, habilite o sinalizador de rastreamento 16268.
Examples
Selecione todos os registros da Employees tabela onde o primeiro nome começa A e termina com Y:
SELECT *
FROM Employees
WHERE REGEXP_LIKE (FIRST_NAME, '^A.*Y$');
Selecione todos os registros da Employees tabela onde o primeiro nome começa A e termina com Y, usando o modo insensível a maiúsculas minúsculas:
SELECT *
FROM Employees
WHERE REGEXP_LIKE (FIRST_NAME, '^A.*Y$', 'i');
Selecione todos os registros da Orders tabela em que a data do pedido está em fevereiro de 2020:
SELECT *
FROM Orders
WHERE REGEXP_LIKE (ORDER_DATE, '2020-02-\d\d');
Selecione todos os registros da Products tabela em que o nome do produto contém pelo menos três vogais consecutivas:
SELECT *
FROM Products
WHERE REGEXP_LIKE (PRODUCT_NAME, '[AEIOU]{3,}');
Crie uma tabela de funcionários com CHECK restrições para as Email colunas e Phone_Number :
DROP TABLE IF EXISTS Employees;
CREATE TABLE Employees
(
ID INT IDENTITY (101, 1),
[Name] VARCHAR (150),
Email VARCHAR (320)
CHECK (REGEXP_LIKE (Email, '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$')),
Phone_Number NVARCHAR (20)
CHECK (REGEXP_LIKE (Phone_Number, '^(\d{3})-(\d{3})-(\d{4})$'))
);