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)
, Azure SQL Database
, Azure SQL Managed Instance
, Base de datos SQL en Microsoft Fabric
En este artículo se presentan expresiones regulares para SQL Server.
Una expresión regular, o regex, es una secuencia de caracteres que define un patrón de búsqueda para el texto. Regex se usa normalmente para una variedad de tareas, como la coincidencia de patrones, la validación de datos, la transformación de datos y la consulta. Ofrece una manera flexible y eficaz de buscar, manipular y controlar operaciones de datos complejas.
Note
Las expresiones regulares están disponibles en la Instancia Administrada de Azure SQL con
Esta implementación de expresiones regulares se basa en la biblioteca de expresiones regulares RE2. Para obtener más información, visite Sintaxis de expresiones regulares RE2.
Funciones regex admitidas:
| Function | Description |
|---|---|
| REGEXP_LIKE | Devuelve un valor booleano que indica si la entrada de texto coincide con el patrón regex. |
| REGEXP_REPLACE | Devuelve una cadena de origen modificada reemplazada por una cadena de reemplazo, donde se encontró la aparición del patrón regex. |
| REGEXP_SUBSTR | Extrae partes de una cadena basada en un patrón de expresión regular. Devuelve la Enésima aparición de una subcadena que coincide con el patrón regex. |
| REGEXP_INSTR | Devuelve la posición inicial o final de la subcadena coincidente, dependiendo de la opción proporcionada. |
| REGEXP_COUNT | Devuelve un recuento del número de veces que se produce el patrón regex en una cadena. |
| REGEXP_MATCHES | Devuelve una tabla de subcadenas capturadas que coinciden con un patrón de expresión regular con una cadena. Si no se encuentra ninguna coincidencia, la función no devuelve ninguna fila. |
| REGEXP_SPLIT_TO_TABLE | Devuelve una tabla de cadenas dividida, delimitada por el patrón regex. Si no hay ninguna coincidencia con el patrón, la función devuelve la cadena. |
Las expresiones regulares se pueden componer de caracteres literales y metacaractores, que tienen significados y funciones especiales.
Una expresión regular básica es un carácter literal único. Los caracteres coinciden con ellos mismos, excepto para los metacaractores. Los metacharacters incluyen *, +, ?, (, )o |. Para buscar coincidencias con un metacaracter, escape con una barra diagonal inversa. Por ejemplo, \* coincide con el carácter de asterisco literal (*).
Se pueden modificar o concatenar dos expresiones regulares para formar una nueva expresión regular: si e1 coincide con s y e2 coincide con t, e1 | e2 coincide con s o t, y e1e2 coincide con st.
Los metacaractores *, +y ? son operadores de repetición: e1* coincide con una secuencia de cero o más cadenas (posiblemente diferentes), cada una de las cuales coincide con e1; e1 + coincide con una o varias; e1? coincide con cero o uno.
La precedencia del operador, del enlace más débil al más fuerte, es la siguiente: - Alternación - Concatenación - Operadores de repetición
Los paréntesis explícitos se pueden usar para forzar significados diferentes, como en expresiones aritméticas. Algunos ejemplos: ab|cd es equivalente a (ab)|(cd) ; ab es equivalente a a(b).
Para obtener más información sobre la sintaxis de expresión regular aceptada por RE2, consulte
Sintaxis de expresión regular RE2. En esta página también se muestra una sintaxis aceptada por PCRE, Perl y Vim.
Caracteres de expresión regular aceptados
Expresiones de caracteres únicos
| Tipos de expresiones de carácter único | Examples |
|---|---|
| cualquier carácter, incluida posiblemente la nueva línea (s=true) | . |
| character class | [xyz] |
| clase de caracteres negada | [^xyz] |
| Clases de caracteres perl | \d |
| clase de caracteres de Perl negada | \D |
| Clases de caracteres ASCII | [[:alpha:]] |
| clase de caracteres ASCII negada | [[:^alpha:]] |
| clase de caracteres de Unicode (nombre de una sola letra) | \pN |
| clase de caracteres Unicode | \p{Greek} |
| clase de caracteres de Unicode negada (nombre de una sola letra) | \PN |
| clase de caracteres Unicode negada | \P{Greek} |
| Composites | Description |
|---|---|
xy |
x seguido de y |
x | y |
x o y (se prefiere x) |
| Repeticiones | Description |
|---|---|
x* |
cero o más x, prefiere más |
x+ |
una o varias x, prefiere más |
x? |
cero o una x, prefiere una |
x{n,m} |
n o n+1 o ... o m x, preferir más |
x{n,} |
n o más x, prefiere más |
x{n} |
exactamente n x |
x*? |
cero o más x, prefiere menos |
x+? |
una o más x, prefiere menos |
x?? |
cero o una x, prefiere cero |
x{n,m}? |
n o n+1 o ... o m x, prefiere menos |
x{n,}? |
n o más x, prefiere menos |
x{n}? |
exactamente n x |
Note
Los formularios x{n,m}de recuento , x{n,}y x{n} rechazan formularios que crean un recuento mínimo o máximo de repeticiones por encima de 1000. Las repeticiones ilimitadas no están sujetas a esta restricción.
Clases de caracteres perl
En la tabla siguiente se enumeran las clases de caracteres Perl admitidas actualmente.
| clases de caracteres Perl (todos solo ASCII) | Description |
|---|---|
\d |
dígitos ( [0-9]) |
\D |
no dígitos ( [^0-9]) |
\s |
espacio en blanco ( [\t\n\f\r ]) |
\S |
sin espacios en blanco ( [^\t\n\f\r ]) |
\w |
caracteres de palabra ( [0-9A-Za-z_]) |
\W |
caracteres que no pertenecen a palabras ( [^0-9A-Za-z_]) |
clases de caracteres ASCII
En la tabla siguiente se enumeran las clases de caracteres ASCII admitidas actualmente.
| clases de caracteres ASCII | Description |
|---|---|
[[:alnum:]] |
alfanumérico ( [0-9A-Za-z]) |
[[:alpha:]] |
alfabético ( [A-Za-z]) |
[[:ascii:]] |
ASCII ( [\x00-\x7F]) |
[[:blank:]] |
vacío ( [\t ]) |
[[:cntrl:]] |
control ( [\x00-\x1F\x7F]) |
[[:digit:]] |
dígitos ( [0-9]) |
[[:graph:]] |
gráfico ( [!-~] o [A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~]) |
[[:lower:]] |
minúscula ( [a-z]) |
[[:print:]] |
imprimible ( [ -~] o [ [:graph:]]) |
[[:punct:]] |
puntuación ( [!-/:-@[-\``{-~]) |
[[:space:]] |
espacio en blanco ( [\t\n\v\f\r ]) |
[[:upper:]] |
mayúsculas ( [A-Z]) |
[[:word:]] |
caracteres de palabra ( [0-9A-Za-z_]) |
[[:xdigit:]] |
dígito hexadecimal ( [0-9A-Fa-f]) |
Caracteres literales
- Letters
- Numbers
- Symbols
Cadenas vacías
| Cadenas vacías | Description |
|---|---|
^ |
Al principio del texto o línea (m=true) |
$ |
Al final del texto (como \z, no \Z) o línea (m=true) |
\A |
Al principio del texto |
\b |
En el límite de la palabra ASCII (\w en un lado y \W, \Ao \z en la otra) |
\B |
No en el límite de palabras ASCII |
\z |
Al final del texto |
Groupings
Grupo de captura (subexpresión) del patrón con:
| Grouping | Description |
|---|---|
(re) |
Grupo de captura numerado (submatch) |
(?P<name>re) |
Grupo de captura con nombre y numerado (submatch) |
(?:re) |
Grupo que no es de captura |
(?<flags>) |
Establecer <flags> dentro del grupo actual; no capturar |
(?<flags>:re) |
Establecer <flags> durante re; agrupación sin captura |
Flags
Use marcas para modificar el comportamiento de la expresión. Por ejemplo:
| 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) |
Esta implementación admite el estándar POSIX de expresiones regulares después de RE2 y tiene compatibilidad con el sabor PCRE/PCRE2 de la sintaxis de expresiones regulares, que es compatible con la mayoría de los motores y herramientas de expresiones regulares modernas. Hay diferentes tipos de expresiones regulares, como POSIX, ANSI, Perl y PCRE, que tienen diferentes características y sintaxis. Para obtener más información sobre las construcciones y el comportamiento admitidos del motor de expresiones regulares subyacentes, vea RE2, una biblioteca de expresiones regulares.
Note
La coincidencia de expresiones regulares en SQL Server no respeta las intercalaciones de SQL para las comparaciones lingüísticas. Este comportamiento es por diseño y coherente con la mayoría de los motores de expresiones regulares, ya que la coincidencia se basa en el patrón y las propiedades de caracteres Unicode en lugar de las reglas de intercalación. Como resultado, podría provocar diferencias en el comportamiento en comparación con otras funciones de comparación de cadenas como LIKE, especialmente en columnas indexadas con intercalaciones específicas del lenguaje.
Requirements
- Una herramienta de cliente SQL, como Azure Data Studio, SQL Server Management Studio o Visual Studio Code.
- Conocimientos básicos sobre la sintaxis y las consultas sql.
- Conocimientos básicos de la sintaxis y los conceptos de expresiones regulares.
FAQ
¿Cuál es el impacto en el rendimiento del uso de regex?
Las consultas regex pueden tener un impacto en el rendimiento en función de la complejidad del patrón regex, el tamaño de los datos de texto y el número de filas implicadas. Puede usar el plan de ejecución y las estadísticas para supervisar y optimizar el rendimiento de las consultas regex.
Limitaciones
Actualmente no se admiten los siguientes elementos:
- Los tipos de datos LOB (varchar(max) o nvarchar(max)) para
string_expressionsse admiten en las siguientes funciones intrínsecas:REGEXP_LIKEREGEXP_COUNTREGEXP_INSTR
Sin embargo, esta compatibilidad se limita a tamaños de entrada de hasta 2 MB.
Los tipos de datos LOB no se admiten en las siguientes funciones regex:
REGEXP_REPLACEREGEXP_SUBSTRREGEXP_MATCHESREGEXP_SPLIT_TO_TABLE
Las funciones de expresión regular no se admiten en procedimientos almacenados compilados de forma nativa.