English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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ón | Descripció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|p3 | Coincide 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. |
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$';