Referencia de funciones

REGEXP_SUBSTR

Devuelve la subcadena que coincide con una expresión regular.

MySQL 8.4
REGEXP_SUBSTR(expr, pattern[, pos[, occurrence[, match_type]]])
  • [ ]parte opcional
expr
Cadena en la que se busca
VARCHAR
pattern
Expresión regular
VARCHAR
pos
Posición desde la que se busca, de 1 a la longitud de la cadena + 1; por defecto, 1
INTOpcional
occurrence
Número de la coincidencia; por defecto, 1 (la primera)
INTOpcional
match_type
Indicadores de coincidencia; se pueden combinar
VARCHAROpcional
cimnu

Valor devuelto

Subcadena coincidente; NULL si no hay coincidencia o si expr o pattern es NULL

Ejemplos

Fecha a partir de una cadena

MySQL 8.4
SELECT REGEXP_SUBSTR(
		'Order from 2024-03-08',
		'[0-9]{4}-[0-9]{2}-[0-9]{2}'
	);
REGEXP_SUBSTR('Order from 2024-03-08', '[0-9]{4}-[0-9]{2}-[0-9]{2}')
2024-03-08

Tercer número de la cadena

MySQL 8.4
SELECT REGEXP_SUBSTR('a1b22c333', '[0-9]+', 1, 3);
REGEXP_SUBSTR('a1b22c333', '[0-9]+', 1, 3)
333

Calle a partir de la dirección

MySQL 8.4
SELECT address,
	REGEXP_SUBSTR(address, '[^, ][^,]*', 1, 2) AS street
FROM Rooms
LIMIT 5;
addressstreet
11218, Friel Place, New YorkFriel Place
10018, 6th Avenue, New York6th Avenue
10027, West 128th Street, New YorkWest 128th Street
11238, Gates Avenue, New YorkGates Avenue
10029, Park Avenue, New YorkPark Avenue

Detalles

Los grupos entre paréntesis no se devuelven por separado: el resultado es la coincidencia entera. Para obtener solo una parte de la coincidencia, acota la expresión o usa REGEXP_REPLACE con $1. pos debe estar entre 1 y la longitud de la cadena + 1: con 0 o con un valor mayor, la función da un error.

Véase también