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) Versión preliminar
de la base de datos SQL de Azure SQL Database
deAzure SQL Managed Instance
en Microsoft Fabric
Nota
Como característica en versión preliminar, la tecnología presentada en este artículo está sujeta a Términos de uso complementarios para las versiones preliminares de Microsoft Azure.
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 sys.databases
o en las propiedades de la 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;
Argumentos
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.
Nota
Las REGEXP_LIKE
funciones , REGEXP_COUNT
y REGEXP_INSTR
admiten tipos loB (varchar(max) y nvarchar(max)) hasta 2 MB para el parámetro string_expression .
expresión_de_patron
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.
marcas
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
Bandera | Descripción |
---|---|
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
.
Observaciones
Para mejorar la precisión de la estimación de cardinalidad de la REGEXP_LIKE
función, puede usar las ASSUME_FIXED_MIN_SELECTIVITY_FOR_REGEXP
sugerencias de consulta y ASSUME_FIXED_MAX_SELECTIVITY_FOR_REGEXP
para ajustar los valores de selectividad predeterminados. Para obtener más información, consulte Sugerencias de consulta.
Estas sugerencias de consulta también se integran con los comentarios de estimación de cardinalidad (CE). El modelo de comentarios de CE identifica automáticamente las consultas que usan REGEXP_LIKE
la función donde hay una diferencia significativa entre los recuentos de filas estimados y reales. 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 este comportamiento automático basado en comentarios, habilite la marca de seguimiento 16268.
Ejemplos
Seleccione todos los registros de la tabla EMPLOYEES
donde el nombre comienza por A
y termina con Y
SELECT * FROM EMPLOYEES WHERE REGEXP_LIKE (FIRST_NAME, '^A.*Y$');
Seleccione todos los registros de la tabla ORDERS
donde la fecha de pedido está en febrero de 2020.
SELECT * FROM ORDERS WHERE REGEXP_LIKE (ORDER_DATE, '2020-02-\d\d');
Seleccione todos los registros de la tabla PRODUCTS
donde el nombre del producto contenga al menos tres vocales consecutivas.
SELECT * FROM PRODUCTS WHERE REGEXP_LIKE (PRODUCT_NAME, '[AEIOU]{3,}');
Cree una tabla employees con restricciones de CHECK
para columnas de Email
y 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})$'))
);