Saltar al contenido principal
Documentos
FuncionesExpresionesKeywordsDeclaracionesCláusulas

Palabra clave REGEXP de MySQL

La palabra clave REGEXP en MySQL se utiliza para la concordancia de patrones mediante expresiones regulares. Te permite buscar patrones complejos en cadenas dentro de las tablas de tu base de datos.

Utilización

La palabra clave REGEXP se suele utilizar en la cláusula WHERE para filtrar registros en función de si una cadena coincide con un patrón de expresión regular especificado. Es una potente herramienta para la búsqueda de texto y el reconocimiento de patrones. Las expresiones regulares de MySQL se basan en el estándar POSIX y pueden diferir ligeramente de otras implementaciones de expresiones regulares.

SELECT column_name
FROM table_name
WHERE column_name REGEXP 'pattern';

En esta sintaxis, REGEXP 'pattern' comprueba si column_name coincide con el patrón de expresión regular dado. Ten en cuenta que REGEXP no distingue entre mayúsculas y minúsculas por defecto. Para realizar una coincidencia que distinga entre mayúsculas y minúsculas, utiliza la palabra clave BINARY:

SELECT column_name
FROM table_name
WHERE BINARY column_name REGEXP 'pattern';

Ejemplos

1. Concordancia básica de patrones

SELECT * 
FROM products 
WHERE product_name REGEXP '^C';

Este ejemplo selecciona todas las filas de la tabla products en las que product_name empiece por la letra "C". El patrón '^C' utiliza ^ para indicar el inicio de la cadena, garantizando que sólo coincidan los nombres que empiecen por "C".

2. Coincidencia de varios patrones

SELECT email 
FROM users 
WHERE email REGEXP 'gmail|yahoo';

Aquí, la consulta recupera los correos electrónicos de la tabla users que contengan "gmail" o "yahoo".

3. Concordancia de patrones complejos

SELECT phone_number 
FROM contacts 
WHERE phone_number REGEXP '^[0-9]{3}-[0-9]{3}-[0-9]{4}$';

Este ejemplo selecciona números de teléfono de contacts que coincidan con el patrón de números de teléfono de Norteamérica en el formato XXX-XXX-XXXX.

Consejos y buenas prácticas

  • Optimiza el rendimiento. Las expresiones regulares pueden consumir muchos recursos; utilízalas con criterio y considera la posibilidad de indexar columnas siempre que sea posible. Utiliza EXPLAIN para analizar el rendimiento de las consultas cuando utilices expresiones regulares.
  • Prueba los patrones por separado. Prueba tus expresiones regulares en un entorno distinto para asegurarte de que funcionan como esperas antes de aplicarlas a tus consultas.
  • Utiliza los anclajes con prudencia. Utiliza ^ y $ para indicar el inicio y el final de una cadena, respectivamente, para una concordancia de patrones más precisa.
  • Escapa de los caracteres especiales. Si tu patrón incluye caracteres especiales, asegúrate de que se escapan correctamente para evitar coincidencias inesperadas. Por ejemplo, para que coincida con un punto literal, utiliza \.:
  • WHERE column_name REGEXP '\\.'
  • Nota de compatibilidad. Aunque MySQL admite expresiones regulares básicas, no admite funciones como lookaheads y lookbehinds.
  • Diferencia de LIKE. A diferencia de REGEXP, que admite patrones complejos, LIKE se utiliza para la coincidencia de patrones más sencillos con comodines % y _. Utiliza LIKE para patrones sencillos y REGEXP para requisitos más complejos.

Perfeccionamiento de SQL para principiantes

Adquiere los conocimientos de SQL para interactuar con tus datos y consultarlos.
Empieza a aprender gratis