Expresiones regulares (REGEXP) en MySQL

Al crear páginas dinámicas con información almacenada en una base de datos hay que porcurar que todo el trabajo de búsqueda lo realize la base de datos. Cuando necesitamos filtrar información en base a un patrón de expresión regular es prferible incluir el patrón regexp en la consulta SQL a obtener todos los datos en bruto y filtrarlos posteriormente mediante un script. Siempre será más rápido realizar el filtrado a nivel de base datos.

La sintaxis de la consulta sería:

expresion REGEXP patrón

 Por ejemplo:

SELECT `nombre` FROM `empleados`
WHERE `nombre` REGEXP '^P';

Esto devolvería cualquier artículo cuyo nombre empieza por P como Paco Lopez, Pablo Martinez…
Esto es mejor que utilizar el operador LIKE junto con el comodín % al buscar una palabra.
Por ejemplo, vamos a buscar empleadas que se llamen Ana

SELECT `nombre` FROM `empleados`
WHERE `nombre` LIKE '%ana%';

Esto devolvería ana, juana, rosana…
En estos casos es mejor utilizar una expresión regular con delimitadores de palabra como esta:

SELECT `nombre` FROM `empleados`
WHERE `nombre` REGEXP '[[:<:]]ana[[:>:]]';

Esta consulta sólo devolverá aquellas columnas en las que aparezca “ana” como palabra única y aislada, delimitada por caracteres no alfabéticos, es decir, cualquier caracter que no sea una letra ya sea número, signo de puntuación o espacio en blanco entre otros.

A continuación una lista de sintaxis de expresiones regulares:

[:alnum:] letras y números
[:alpha:] letras
[:blank:] espacios en blanco
[:digit:] dígitos
[:lower:] letras minúsculas
[:upper:] letras mayúsculas
[:space:] espacios en blanco, tabuladores, nueva línea…

Además de los típicos: ^, $, ., *, ?, +, etc…
Para más información sobre expresiones regulares aqui http://ricardofutami.wordpress.com/2007/01/11/chuleta-de-expresiones-regulares/

Sin categoría

Deja una respuesta