Compartir a través de


REGEXP_SUBSTR (Transact-SQL) (versión preliminar)

Se aplica a: SQL Server 2025 (17.x) Versión preliminar de la base de datos SQL de Azure SQL Database deAzure SQL Managed Instanceen 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.

Devuelve una aparición de una subcadena de una cadena que coincide con el patrón de expresión regular. Si no se encuentra ninguna coincidencia, devuelve NULL.

REGEXP_SUBSTR
     (
      string_expression,
      pattern_expression [, start [, occurrence [, flags [, group ] ] ] ]
     )

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_LIKEfunciones , REGEXP_COUNTy 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.

iniciar

Especifique la posición inicial de la búsqueda dentro de la cadena de búsqueda. Opcional. El tipo es int o bigint.

La numeración se basa en 1, lo que significa que el primer carácter de la expresión es 1 y el valor debe ser >= 1. Si la expresión start es menor que 1, devuelve el error. Si la expresión start es mayor que la longitud de string_expression, la función devuelve NULL. El valor predeterminado es 1.

de repetición

Expresión (entero positivo) que especifica la aparición de la expresión de patrón dentro de la cadena de origen que se va a buscar o reemplazar. El valor predeterminado es 1. Busca en el primer carácter del string_expression. En el caso de un entero n positivo, busca la aparición que comienza con el primer carácter después de la primera aparición de la pattern_expression, etc.

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)

de grupo de

Especifica qué grupo de capturas (subexpresión) de un pattern_expression determina la posición dentro de string_expression que se va a devolver. El grupo de captura (subexpresión) es un fragmento de patrón entre paréntesis y se puede anidar. Los grupos de captura se numeran en el orden en que aparecen sus paréntesis izquierdos. El tipo de datos de grupo será entero y el valor debe ser mayor o igual que 0 y no debe ser mayor que el número de grupos de captura (subexpresiones) en pattern_expression. El valor de grupo predeterminado es 0, que indica que la posición se basa en la cadena que coincide con todo el patrón.

Valor devuelto

Cuerda.

Ejemplos

Extraiga el nombre de dominio de una dirección de correo electrónico.

SELECT REGEXP_SUBSTR(EMAIL, '@(.+)$', 1, 1, 'i', 1) AS DOMAIN
FROM CUSTOMERS;

Busque la primera palabra en una frase que comience con una vocal.

SELECT REGEXP_SUBSTR(COMMENT, '\b[aeiou]\w*', 1, 1, 'i') AS WORD
FROM FEEDBACK;

Obtiene los cuatro últimos dígitos de un número de tarjeta de crédito.

SELECT REGEXP_SUBSTR(CARD_NUMBER, '\d{4}$') AS LAST_FOUR
FROM PAYMENTS;