MySQL admite otro tipo de operación de coincidencia de patrones basada en las expresiones regulares y el operador REGEXP.
- Proporciona una coincidencia de patrones potente y flexible que puede ayudarnos a implementar utilidades de búsqueda potentes para nuestros sistemas de bases de datos.
- REGEXP es el operador que se usa cuando se realizan coincidencias de patrones de expresiones regulares. RLIKE es el sinónimo.
- También admite una serie de metacaracteres que permiten una mayor flexibilidad y control al realizar la coincidencia de patrones.
- La barra invertida se utiliza como carácter de escape. Solo se considera en la coincidencia de patrones si se han utilizado barras invertidas dobles.
- No entre mayúsculas y minúsculas.
Patrón | Lo que coincide con el patrón |
---|---|
* | Cero o más instancias de string que lo preceden |
+ | Una o más instancias de strings que lo preceden |
. | Cualquier personaje individual |
? | Coincide con cero o una instancia de las strings que lo preceden. |
^ | caret(^) coincide con el comienzo de la string |
ps | fin de string |
[a B C] | Cualquier carácter enumerado entre los corchetes |
[^ abc] | Cualquier carácter que no figure entre corchetes |
[ARIZONA] | coincidir con cualquier letra mayúscula. |
[Arizona] | coincidir con cualquier letra minúscula |
[0-9] | coincidir con cualquier dígito del 0 al 9. |
[[:<:]] | coincide con el principio de las palabras. |
[[:>:]] | coincide con el final de las palabras. |
[:clase:] | coincide con una clase de carácter, es decir, [:alpha:] para coincidir con letras, [:space:] para coincidir con espacios en blanco, [:punct:] coincide con puntuaciones y [:upper:] para letras de clase superior. |
p1|p2|p3 | Alternancia; coincide con cualquiera de los patrones p1, p2 o p3 |
{norte} | n instancias del elemento precedente |
{Minnesota} | m a n instancias del elemento anterior |
Ejemplos con explicación:
- Coincidir con el comienzo de la string (^):
proporciona todos los nombres que comienzan con ‘sa’. Ejemplo: sam, samarth.SELECT name FROM student_tbl WHERE name REGEXP '^sa';
- Hacer coincidir el final de una string ($):
da todos los nombres que terminan con ‘on’. Ejemplo: norton, merton.SELECT name FROM student_tbl WHERE name REGEXP 'on$';
- Coincide con cero o una instancia de las strings que lo preceden (?):
da todos los títulos que contienen ‘com’. Ejemplo: comedia, comedia romántica.SELECT title FROM movies_tbl WHERE title REGEXP 'com?';
- coincide con cualquiera de los patrones p1, p2 o p3(p1|p2|p3):
proporciona todos los nombres que contienen ‘be’ o ‘ae’. Ejemplo: Abel, Baer.SELECT name FROM student_tbl WHERE name REGEXP 'be|ae' ;
- Coincide con cualquier carácter enumerado entre corchetes ([abc]):
proporciona todos los nombres que contienen ‘j’ o ‘z’. Ejemplo: Lorentz, Rajs.SELECT name FROM student_tbl WHERE name REGEXP '[jz]' ;
- Coincide con cualquier letra minúscula entre ‘a’ y ‘z’- ([az]) ([az] y (.)):
recupera todos los nombres que contienen una letra en el rango de ‘b’ y ‘g’, seguida de cualquier carácter, seguido de la letra ‘a’. Ejemplo: Tobias, sewall.Coincide con cualquier carácter único (.)
SELECT name FROM student_tbl WHERE name REGEXP '[b-g].[a]' ;
- Coincide con cualquier carácter que no aparezca entre corchetes.([^abc]):
Da todos los nombres que no contienen ‘j’ o ‘z’. Ejemplo: nerton, sewall.SELECT name FROM student_tbl WHERE name REGEXP '[^jz]' ;
- Coincide con el final de las palabras[[:>:]]:
da todos los títulos que terminan con el carácter «ack». Ejemplo: negro.SELECT title FROM movies_tbl WHERE REGEXP 'ack[[:>:]]';
- Coincide con el comienzo de las palabras[[:<:]]:
da todos los títulos que comienzan con el carácter «para». Ejemplo: olvidar a Sarah Marshal.SELECT title FROM movies_tbl WHERE title REGEXP '[[:<:]]for';
- Coincide con una clase de carácter[:clase:]:
es decir, [:lower:]- carácter en minúscula,[:digit:] – caracteres de dígitos, etc.
Proporciona todos los títulos que contienen caracteres alfabéticos solamente. Ejemplo: cosas más extrañas, Vengadores.SELECT title FROM movies_tbl WHERE REGEXP '[:alpha:]' ;
Publicación traducida automáticamente
Artículo escrito por shreyanshi_arun y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA