expresiones regulares mysql
En los capítulos anteriores hemos aprendido que MySQL puede realizar coincidencias aproximadas a través de LIKE ...% .
MySQL también admite la coincidencia de otras expresiones regulares MySQL utiliza el operador REGEXP para la coincidencia de expresiones regulares.
Si conoce PHP o Perl, es bastante fácil, ya que la coincidencia de expresiones regulares de MySQL es similar a la de estos scripts.
Los patrones regulares de la siguiente tabla se pueden aplicar al operador REGEXP.
modelo | describir |
---|---|
^ | Coincide con el comienzo de la cadena de entrada. ^ también coincide con la posición después de '\n' o '\r' si se establece la propiedad Multiline del objeto RegExp. |
ps | Coincide con el final de la cadena de entrada. Si se establece la propiedad Multiline del objeto RegExp, $ también coincide con la posición anterior a '\n' o '\r'. |
. | Coincide con cualquier carácter individual excepto "\n". Para hacer coincidir cualquier carácter, incluido '\n', use un patrón como '[.\n]'. |
[...] | colección de personajes. Coincide con cualquiera de los caracteres contenidos. Por ejemplo, '[abc]' coincidiría con 'a' en "normal". |
[^...] | Conjunto de caracteres negativos. Coincide con cualquier carácter no contenido. Por ejemplo, '[^abc]' coincidiría con la 'p' en "normal". |
p1|p2|p3 | Coincide con p1, p2 o p3. Por ejemplo, 'z|comida' coincidiría con "z" o "comida". '(z|f)ood' coincide con "zood" o "comida". |
* | Coincide con la subexpresión anterior cero o más veces. Por ejemplo, zo* coincidiría tanto con "z" como con "zoo". * es equivalente a {0,}. |
+ | Coincide con la subexpresión anterior una o más veces. Por ejemplo, 'zo+' coincidiría con "zo" y "zoo", pero no con "z". + es equivalente a {1,}. |
{norte} | n es un entero no negativo. Coincide exactamente n veces. Por ejemplo, 'o{2}' no coincidiría con la 'o' de "Bob", pero coincidiría con las dos o de "comida". |
{Nuevo Méjico} | Tanto m como n son números enteros no negativos, donde n <= m. Coincide al menos n veces y como máximo m veces. |
ejemplo
Después de comprender los requisitos regulares anteriores, podemos escribir declaraciones SQL con expresiones regulares de acuerdo con nuestras propias necesidades. A continuación, enumeraremos varios ejemplos pequeños (nombre de la tabla: person_tbl) para profundizar nuestra comprensión:
Encuentre todos los datos que comienzan con 'st' en el campo de nombre:
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';
Encuentre todos los datos que terminen en 'ok' en el campo de nombre:
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';
Encuentre todos los datos que contengan la cadena 'mar' en el campo de nombre:
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';
Encuentre todos los datos en el campo de nombre que comiencen con un carácter de vocal o terminen con la cadena 'ok':
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';