MariaDB: función REGEXP_SUBSTR

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

MariaDB: función REGEXP_SUBSTR

Este tutorial de MariaDB explica cómo usar MariaDB función REGEXP_SUBSTR Con sintaxis y ejemplos.

describir

La función MariaDB REGEXP_SUBSTR es una extensión de la función SUBSTR. Esta característica, introducida en MariaDB 10.0.5, le permitirá extraer subcadenas dentro de una cadena mediante la coincidencia de patrones de expresiones regulares.

sintaxis

La sintaxis de la función REGEXP_SUBSTR en MariaDB es:

REGEXP_SUBSTR( string, pattern )

parámetro o parámetro

cadena La cadena a buscar.patrón

Información de coincidencia de expresiones regulares. Puede ser una combinación de lo siguiente:

valor describir
^ Coincide con el principio de la cadena. Si se usa con el parámetro de coincidencia de ‘m’, coincide con el comienzo de una línea en cualquier parte de la expresión.
PS Coincide con el final de la cadena. Si se usa con el parámetro de coincidencia de ‘m’, coincidirá con el final de la línea en cualquier parte de la expresión.
* Coincide con cero o más ocurrencias.
+ Coincide con una o más coincidencias.
? Partido cero o una vez.
. Coincide con cualquier carácter excepto NULL.
| Use como “O” para especificar múltiples alternativas.
[ ] Se utiliza para especificar una lista de coincidencias en la que intenta hacer coincidir cualquiera de los caracteres de la lista.
[^ ] Se utiliza para especificar una lista no coincidente en la que está intentando hacer coincidir cualquier carácter excepto los de la lista.
( ) Se utiliza para agrupar expresiones en subexpresiones.
{arroz} Coincidir m veces.
{arroz,} Coincide al menos m veces.
{Minnesota} Coincide al menos m veces, pero no más de n veces.
norte n es un número entre 1 y 9. Coincide con la n-ésima subexpresión encontrada en ( ) antes de que se encuentre n.
[..] Coincide con un elemento de intercalación que puede tener más de un carácter.
[::] Coincide con las clases de personajes.
[==] Igualar clases de equivalencia.
D Coincide con un carácter numérico.
D Coincide con caracteres no numéricos.
w Coincide con un carácter de palabra.
W Coincide con caracteres que no son palabras.
s Coincide con un carácter de espacio en blanco.
S Coincide con caracteres que no son espacios en blanco.
*? Coincide con cero o más ocurrencias del patrón anterior.
+? Coincide con una o más apariciones del patrón anterior.
?? Coincide con cero o una aparición del patrón anterior.
{norte}? Coincide con el patrón anterior n veces.
{norte,}? Coincide con el patrón anterior al menos n veces.
{Nuevo Méjico}? Haga coincidir el patrón anterior al menos n veces, pero no más de m veces.

notas

  • La función REGEXP_SUBSTR realiza coincidencias sin distinción entre mayúsculas y minúsculas, a menos que se use con cadenas binarias.
  • Si la función REGEXP_SUBSTR no encuentra ninguna aparición del patrón, devolverá NULL.
  • Esta página se aplica a MariaDB 10.0.5 y versiones posteriores, que utilizan la biblioteca de expresiones regulares PCRE.
  • Consulte también la función SUBSTR.

aplicar para

La función REGEXP_SUBSTR está disponible en las siguientes versiones de MariaDB:

  • MariaDB 10.0.5+

Ejemplo: coincidencia de múltiples alternativas

Primero veamos cómo usar | Esquema para usar la función REGEXP_SUBSTR en MariaDB.

Por ejemplo:

SELECT REGEXP_SUBSTR ('Ball Point Pen','P(a|e|i)n');
Result: 'Pen'

SELECT REGEXP_SUBSTR ('Eggs and pancakes','P(a|e|i)n');
Result: 'pan'

Estos ejemplos de REGEXP_SUBSTR devolverán valores como Pan, Pen o Pin.Esta | El patrón nos dice que busquemos las letras “a”, “e” o “i” entre las letras “P” y “n”. La función REGEXP_SUBSTR realiza una búsqueda que no distingue entre mayúsculas y minúsculas, por lo que no importa el caso de las letras en la cadena.

búsqueda sensible a mayúsculas y minúsculas

Si queremos realizar una búsqueda que distingue entre mayúsculas y minúsculas, debemos modificar nuestra función REGEXP_SUBSTR para usar cadenas binarias. Esto se puede hacer de una de dos maneras.

SELECT REGEXP_SUBSTR (BINARY 'Eggs and pancakes', 'P(a|e|i)n');
Result: NULL

o…

SELECT REGEXP_SUBSTR ('Eggs and pancakes' COLLATE utf8_bin, 'P(a|e|i)n');
Result: NULL

En el primer ejemplo, usamos la palabra clave BINARY para convertir una cadena en una cadena binaria. En el segundo ejemplo, usamos COLLATE para convertir la cadena en una cadena binaria.

Dado que estamos haciendo una búsqueda que distingue entre mayúsculas y minúsculas, el patrón no coincide con “panqueques” porque espera una “P” mayúscula, por lo que la función REGEXP_SUBSTR devolverá NULL.

Búsqueda de columna de tabla

Ahora mostremos cómo usar la función REGEXP_SUBSTR con las columnas de la tabla:

Supongamos que tenemos una tabla de contactos con los siguientes datos:

Identificación de contacto apellido
1000 anderson
2000 Herrero
3000 Johnson

Ahora, ejecutemos la siguiente consulta:

SELECT contact_id, last_name, REGEXP_SUBSTR (last_name, 'a|e|i|o|u') AS "First Vowel"
FROM contacts;

Estos son los resultados que devolverá la consulta:

Identificación de contacto apellido primera vocal
1000 anderson Una
2000 Herrero Una generación
3000 Johnson

Ejemplo: coincidencia de palabras

A continuación, veamos cómo usar la función REGEXP_SUBSTR para extraer la primera palabra de una cadena.

Por ejemplo:

SELECT REGEXP_SUBSTR ('TechOnTheNet is a great resource', '(\S*)');
Result: 'TechOnTheNet'

Este ejemplo devolverá “TechOnTheNet”, ya que extraerá todos los caracteres que no sean espacios en blanco especificados (\S*) y se detiene cuando encuentra el primer carácter de espacio en blanco (es decir, el carácter de espacio). Esto dará como resultado que se devuelva la palabra “TechOnTheNet”.

Si desea devolver las dos primeras palabras de la cadena, podemos modificar el ejemplo de la siguiente manera:

SELECT REGEXP_SUBSTR ('TechOnTheNet is a great resource', '(\S*)(\s)(\S*)');
Result: 'TechOnTheNet is'

Este ejemplo extraerá las dos primeras palabras de una cadena.Esta (\S*) coincide con la primera palabra de una cadena, (\s) coincide con el primer carácter que no es un espacio en blanco, y (\S*) Coincide con la segunda palabra de la cadena.

Ejemplo: coincidencia de caracteres numéricos

Ahora, veamos cómo usar la función REGEXP_SUBSTR para hacer coincidir un patrón de caracteres de un solo dígito.

Por ejemplo:

SELECT REGEXP_SUBSTR ('7, 8, and 15 are numbers in this example', '\d');
Result: 7

Este ejemplo extraerá el primer número de la cadena especificada \dEn este caso coincidirá con el número 7.

Podemos cambiar nuestro patrón para buscar un número de dos dígitos.

Por ejemplo:

SELECT REGEXP_SUBSTR ('7, 8, and 15 are numbers in this example', '(\d)(\d)');
Result: 15

Este ejemplo extraerá un número con dos números uno al lado del otro como (\d)(\d)En este caso, se saltará los valores 7 y 8 y devolverá 15.

Ahora, veamos cómo usar la función REGEXP_SUBSTR con una columna de tabla y buscar dos dígitos.

Por ejemplo:

SELECT REGEXP_SUBSTR (address, '(\d)(\d)')
FROM contacts;

En este ejemplo, extraeremos los primeros dos dígitos del campo de dirección en la tabla de Contactos.