MariaDB - Expresión regular
Más allá de la coincidencia de patrones disponible en las cláusulas LIKE, MariaDB ofrece una coincidencia basada en expresiones regulares a través del operador REGEXP. El operador realiza una coincidencia de patrones para una expresión de cadena basada en un patrón dado.
MariaDB 10.0.5 introdujo Expresiones regulares PCRE, que aumenta drásticamente el alcance de la coincidencia en áreas como patrones recursivos, aserciones anticipadas y más.
Revise el uso de la sintaxis estándar del operador REGEXP que se indica a continuación:
SELECT column FROM table_name WHERE column REGEXP '[PATTERN]';
REGEXP devuelve 1 para una coincidencia de patrón o 0 en ausencia de uno.
Existe una opción para lo contrario en forma de NOT REGEXP. MariaDB también ofrece sinónimos para REGEXP y NOT REGEXP, RLIKE y NOT RLIKE, que fueron creados por razones de compatibilidad.
El patrón comparado puede ser una cadena literal o algo más, como una columna de tabla. En cadenas, utiliza la sintaxis de escape de C, por lo que duplica los caracteres "\". REGEXP tampoco distingue entre mayúsculas y minúsculas, con la excepción de las cadenas binarias.
A continuación se muestra una tabla de posibles patrones que se pueden utilizar:
No Señor | Patrón y descripción |
---|---|
1 | ^ Coincide con el inicio de la cadena. |
2 | $ Coincide con el final de la cuerda. |
3 | . Coincide con un solo carácter. |
4 | [...] Coincide con cualquier carácter entre paréntesis. |
5 | [^...] Coincide con cualquier carácter que no figure entre corchetes. |
6 | p1|p2|p3 Coincide con cualquiera de los patrones. |
7 | * Coincide con 0 o más instancias del elemento anterior. |
8 | + Coincide con 1 o más instancias del elemento anterior. |
9 | {n} Coincide con n instancias del elemento anterior. |
10 | {m,n} Coincide con m an instancias del elemento anterior. |
Revise los ejemplos de coincidencia de patrones que se dan a continuación:
Productos que comienzan con "pr" -
SELECT name FROM product_tbl WHERE name REGEXP '^pr';
Productos que terminan con "na":
SELECT name FROM product_tbl WHERE name REGEXP 'na$';
Productos que comienzan con una vocal -
SELECT name FROM product_tbl WHERE name REGEXP '^[aeiou]';