English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Expresiones regulares MySQL

En los capítulos anteriores ya hemos conocido que MySQL puede hacer esto a través de LIKE ...% para realizar coincidencias de búsqueda fuzzy.

MySQL también admite otros ajustes de expresiones regulares, MySQL utiliza el operador REGEXP para realizar el ajuste de expresiones regulares.

Si conoce PHP o Perl, es muy simple de usar, porque el ajuste de expresiones regulares de MySQL es similar a estos scripts.

Los patrones regulares en la tabla siguiente se pueden aplicar al operador REGEXP.

PatrónDescripción
^Coincide con la posición de inicio de la cadena de entrada. Si se ha configurado la propiedad Multiline del objeto RegExp, ^ también coincide con la posición después de '\n' o '\r'.
$Coincide con la posición de finalización de la cadena de entrada. Si se ha configurado la propiedad Multiline del objeto RegExp, $ también coincide con la posición antes de '\n' o '\r'.
.Coincide con cualquier carácter individual excepto '\n'. Para coincidir con cualquier carácter incluyendo '\n', utilice un patrón como '[.\n]'.
[...]Conjunto de caracteres. Coincide con cualquier carácter incluido. Por ejemplo, '[abc]' puede coincidir con 'a' en 'plain'.
[^...]Conjunto de caracteres negativos. Coincide con cualquier carácter no incluido. Por ejemplo, '[^abc]' puede coincidir con 'p' en 'plain'.
p1|p2|p3Coincide con p1 o p2 o p3Por ejemplo, 'z|food' puede coincidir con 'z' o 'food'. '(z|f)ood' coincide con 'zood' o 'food'.
*Coincide cero o más veces con la subexpresión anterior. Por ejemplo, zo* Puede coincidir con 'z' y 'zoo'.* Es equivalente a {0,}。
+Coincide una vez o más con la subexpresión anterior. Por ejemplo, 'zo+' puede coincidir con 'zo' y 'zoo', pero no puede coincidir con 'z'.+ Es equivalente a {1,}。
{n}n es un entero no negativo. Coincide n veces. Por ejemplo, 'o{2No puede coincidir 'o' en 'Bob', pero puede coincidir con dos 'o' en 'food'.
{n,m}m y n son enteros no negativos, donde n <= m. Coincidencia mínima de n veces y coincidencia máxima de m veces.

Ejemplos en línea

Después de entender estos requisitos de expresiones regulares, podemos escribir sentencias SQL con expresiones regulares según nuestras necesidades. A continuación, presentaremos algunos ejemplos pequeños (nombre de tabla: person_tbl) para profundizar en nuestra comprensión:

Buscar todos los datos con el campo name que comienza con 'st':

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';

Buscar todos los datos con el campo name que termina con 'ok':

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';

Buscar todos los datos con el campo name que contiene la cadena 'mar':

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';

Buscar todos los datos con el campo name que comienza con una vocal o termina con la cadena 'ok':

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';