Tema SQL
REGEXP / RLIKE (MySQL / MariaDB)
Operadores de comparación por expresión regular POSIX u HC4 según versión y modo. RLIKE es sinónimo de REGEXP. No confundir con LIKE simple.
Descripción
columna REGEXP seguida del patrón devuelve 1/0 en contexto booleano. REGEXP_LIKE (8.0.4+) centraliza flags. Las regex son potentes pero costosas en tablas grandes sin prefiltrar; valora índices funcionales o full-text. Diferencias entre compilaciones: MariaDB puede usar PCRE. Escapa metacaracteres si concatenas entrada de usuario para eviar ReDoS. En PostgreSQL usa ~ y ~*; en SQL Server LIKE limitado o CLR.
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
expresión REGEXP patrón
expresión RLIKE patrón
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- Rendimiento
- No suele usar índice B-tree salvo prefijos muy selectivos.
- Seguridad
- Valida patrones de usuario; riesgo de coste CPU.
- PostgreSQL
- Operadores ~ / SIMILAR TO según caso.
Ejemplos
Ejemplo 1
SELECT email FROM usuarios WHERE email REGEXP '^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,}$';
SELECT * FROM logs WHERE mensaje REGEXP 'error|warn';
Ejemplo 2
SELECT nombre FROM usuarios WHERE nombre REGEXP '^[A-Z][a-z]+$';
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.