Usar expresiones regulares en las sentencias SELECT de MySQL

Una capacidad muy interesante y potente en MySQL y otras bases de datos es la capacidad de incorporar sintaxis de expresión regular al seleccionar datos. El soporte de expresiones regulares en MySQL es extenso. Esta receta revisa el uso de expresiones regulares en MySQL y enumera los metacaracteres de expresiones regulares compatibles.


La sintaxis básica para usar expresiones regulares en una consulta de MySQL es:

SELECCIONE algo de la tabla DONDE columna REGEXP 'regexp'

Por ejemplo, para seleccionar todas las columnas de los eventos de la tabla donde los valores en la columna id terminan con 5587, use:

SELECCIONAR * DESDE eventos DONDE ID REGEXP '5587 $'

Un ejemplo más elaborado selecciona todas las columnas de las revisiones de la tabla donde los valores en la descripción de la columna contienen la palabra excelente:

SELECCIONAR * DE revisiones DONDE descripción REGEXP '[[::]]'

MySQL permite los siguientes metacaracteres de expresiones regulares:

. coincide con cualquier personaje
? coincide con cero o uno
* coincide con cero o más
+ coincide con uno o más
{n} coincidir n veces
{m, n} hacer coincidir m por n veces
{n,} coincidir n o más veces
^ comienzo de linea
$ fin de línea
[[::]] coincidencia final de palabras
[: class:] coincide con una clase de personaje
es decir, [: alfa:] para letras
[: espacio:] para espacios en blanco
[: punteado:] para puntuacion
[: superior:] para letras mayúsculas
[abc] coincide con uno de los caracteres cerrados
[^ xyz] coincide con cualquier carácter no incluido
| separa alternativas

MySQL interpreta un carácter de barra invertida (\) como un carácter de escape. Para usar una barra invertida en una expresión regular, debe escapar con otra barra invertida (\).