Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: SQL Server 2025 (17.x)
Base de datos SQL de Azure SQL Database
deAzure SQL Managed Instance
en Microsoft Fabric
Indica si el patrón de expresión regular coincide en una cadena.
REGEXP_LIKE
(
string_expression,
pattern_expression [ , flags ]
)
REGEXP_LIKE requiere el nivel de compatibilidad de la base de datos 170 y versiones posteriores. Si el nivel de compatibilidad de la base de datos es inferior a 170, REGEXP_LIKE no está disponible. Otras funciones escalares de expresiones regulares están disponibles en todos los niveles de compatibilidad.
Puede comprobar el nivel de compatibilidad en la vista o en las propiedades de la sys.databases base de datos. Puede cambiar el nivel de compatibilidad de una base de datos con el siguiente comando:
ALTER DATABASE [DatabaseName]
SET COMPATIBILITY_LEVEL = 170;
Note
Las expresiones regulares están disponibles en Instancia administrada de Azure SQL con sql Server 2025 o la directiva de actualizaciónalways-up-to-date.
Arguments
string_expression
Expresión de una cadena de caracteres.
Puede ser una constante, variable o columna de cadena de caracteres.
Tipos de datos: char, nchar, varcharo nvarchar.
Note
Las REGEXP_* funciones soportan tipos LOB (varchar(max) y nvarchar(max)) hasta 2 MB para el parámetro string_expression .
pattern_expression
Patrón de expresión regular que debe coincidir. Normalmente, un literal de texto.
Tipos de datos: char, nchar, varcharo nvarchar. pattern_expression admite una longitud máxima de caracteres de 8000 bytes.
flags
Uno o varios caracteres que especifican los modificadores usados para buscar coincidencias. El tipo es varchar o char, con un máximo de 30 caracteres.
Por ejemplo, ims. El valor predeterminado es c. Si se proporciona una cadena vacía (' '), se tratará como el valor predeterminado ('c'). Proporcione c o cualquier otra expresión de caracteres. Si la marca contiene varios caracteres contradictorios, SQL Server usa el último carácter.
Por ejemplo, si especifica ic la expresión regular devuelve coincidencias que distinguen mayúsculas de minúsculas.
Si el valor contiene un carácter distinto de los enumerados en Valores de marca admitidos, la consulta devuelve un error como el ejemplo siguiente:
Invalid flag provided. '<invalid character>' are not valid flags. Only {c,i,s,m} flags are valid.
Valores de marca admitidos
| Flag | Description |
|---|---|
i |
No distingue mayúsculas de minúsculas (valor predeterminado false) |
m |
Modo de varias líneas: ^ y $ coinciden con la línea de inicio y finalización, además del texto de inicio y finalización (valor predeterminado false) |
s |
Permitir que . coincida \n (valor predeterminado false) |
c |
Distingue mayúsculas de minúsculas (valor predeterminado true) |
Valor devuelto
Valor booleano.
true o false.
Remarks
Estimación de cardinalidad
Para mejorar la precisión de la estimación de cardinalidad de la REGEXP_LIKE función, utiliza las ASSUME_FIXED_MIN_SELECTIVITY_FOR_REGEXP pistas de y ASSUME_FIXED_MAX_SELECTIVITY_FOR_REGEXP query para ajustar los valores de selectividad por defecto. Para obtener más información, consulte Sugerencias de consulta.
Estas pistas de consulta también se integran con la retroalimentación de estimación de cardinalidad (CE). El modelo de retroalimentación de CE identifica automáticamente las consultas que usan la REGEXP_LIKE función donde hay una diferencia significativa entre el número estimado y el número real de filas. A continuación, aplica la sugerencia de selectividad adecuada en el nivel de consulta para mejorar la calidad del plan sin necesidad de entrada manual.
Para deshabilitar el comportamiento de comentarios automáticos, habilite la marca de seguimiento 16268.
Soporte para patrones SARGable
REGEXP_LIKE es SARGable solo cuando el patrón comienza con el ancla ^. Además, el patrón anclaje puede incluir:
- Un cuantificador:
*,+,?,{n},{n,}, o{n,m}. Por ejemplo,^ab+o^ab*. - Caracteres de rango, como
[0-9A-Za-z].
Para escapar de un metapersonaje, usa la barra inversa (\).
Estas condiciones permiten al optimizador de consultas utilizar operaciones de búsqueda de índice para mejorar el rendimiento de las consultas.
Las expresiones regulares no respetan las reglas de la colación. Su comportamiento podría ser diferente al de otras funciones de comparación de cadenas, como LIKE. Esta diferencia es especialmente importante en columnas indexadas que tienen colaciones específicas del idioma.
Por ejemplo, en la intercalación turca, los caracteres y i se tratan de forma distinta incluso en la intercalación sin distinción entre mayúsculas y minúsculas I debido a reglas específicas del lenguaje. Para más información, véase el ejemplo F. Comparar la coincidencia de patrones SARGable y no SARGable con la colación turca.
Note
El término SARGable en bases de datos relacionales se refiere a un predicado Search ARGumentable que puede utilizar un índice para acelerar la ejecución de la consulta. Para obtener más información, consulte SQL Server y la guía de diseño y arquitectura de índices de Azure SQL.
Examples
A. Empareja valores que empiezan y terminan con personajes específicos
Selecciona todos los registros de la Employees tabla donde el nombre comienza A y termina con Y:
SELECT *
FROM Employees
WHERE REGEXP_LIKE (FIRST_NAME, '^A.*Y$');
B. Realiza una coincidencia de patrones insensible a mayúsculas minúsculas
Selecciona todos los registros de la Employees tabla donde el nombre comienza y A termina en Y, usando el modo insensible a mayúsculas:
SELECT *
FROM Employees
WHERE REGEXP_LIKE (FIRST_NAME, '^A.*Y$', 'i');
C. Fechas de coincidencia usando un patrón de expresión regular
Seleccione todos los registros de la Orders tabla donde se encuentra la fecha de pedido en febrero de 2020:
SELECT *
FROM Orders
WHERE REGEXP_LIKE (ORDER_DATE, '2020-02-\d\d');
D. Coincidir con patrones de caracteres repetidos
Seleccione todos los registros de la Products tabla donde el nombre del producto contiene al menos tres vocales consecutivas:
SELECT *
FROM Products
WHERE REGEXP_LIKE (PRODUCT_NAME, '[AEIOU]{3,}');
E. Hacer cumplir la validación de datos con restricciones CHECK
Crea una tabla de empleados con CHECK restricciones para las Email columnas y Phone_Number de :
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})$'))
);
F. Compara la compatibilidad de patrones SARGable y no SARGable con la colación turca
Este ejemplo demuestra el uso SARGable y no SARGable de la REGEXP_LIKE función con la colación turca.
-- Create a temporary table with Turkish collation and and an index
CREATE TABLE #Users
(
Username NVARCHAR (100) COLLATE Turkish_100_CI_AS_SC_UTF8 NOT NULL,
INDEX idx_username (Username)
);
-- Insert sample data
INSERT INTO #Users (Username)
VALUES (N'i'), -- lowercase i
(N'I'), -- uppercase dotless I
(N'İ'), -- uppercase dotted İ
(N'abc');
-- SARGable pattern: starts with ^ and uses quantifier
-- This will use index seek if applicable, but REGEXP_LIKE ignores collation
-- So 'i' and 'I' are treated as different characters
SELECT 'SARGable' AS PatternType,
*
FROM #Users
WHERE REGEXP_LIKE (Username, '^i');
-- Non-SARGable pattern: does not start with ^.
-- REGEXP_LIKE performs full scan, and matches are
-- case-insensitive since 'i' flag is supplied,
-- so both 'i' and 'I' match.
SELECT 'Non-SARGable' AS PatternType,
*
FROM #Users
WHERE REGEXP_LIKE (Username, 'i', 'i');
-- Cleanup
DROP TABLE #Users;