La función MySQL REGEXP_REPLACE() se utiliza para la coincidencia de patrones. Esta función busca en una cadena un patrón de expresión regular y reemplaza cada aparición del patrón con la cadena especificada que coincide con el patrón de expresión regular dado. Si se encuentra la coincidencia, devuelve la cadena completa junto con los reemplazos. Si no se encuentra ninguna coincidencia, la cadena devuelta no cambia. Si la expresión, los patrones y la cadena de reemplazo son NULL, la función devolverá NULL.
REGEXP_REPLACE(), REEMPLAZAR(), y la TRADUCCIÓN() funcionar en mysql funcionan igual, excepto que TRANSLATE nos permite hacer múltiples sustituciones de un solo carácter y la función REPLACE reemplaza una cadena completa con otra cadena, mientras que REGEXP_REPLACE busca una cadena para un patrón de expresión regular.
Sintaxis
La siguiente es una sintaxis básica para usar esta función en MySQL:
REGEXP_REPLACE (expression, pattern, replace_string[, pos[, occurrence[, match_type]]])
Explicación del parámetro
La explicación de los parámetros de la función REGEXP_REPLACE() es:
expresión: Es una cadena de entrada en la que realizaremos búsquedas a través de parámetros y funciones de expresiones regulares.
patrones: Representa el patrón de expresión regular para una subcadena.
reemplazar_cadena: Es una subcadena que se sustituirá si se encuentra la coincidencia.
La función REGEXP_INSTR() utiliza varios parámetros opcionales que se detallan a continuación:
pos: Se utiliza para especificar la posición en la expresión dentro de la cadena para iniciar la búsqueda. Si no especificamos este parámetro, comenzará en la posición 1.
ocurrencia: Se utiliza para especificar qué aparición de una coincidencia vamos a buscar. Si no especificamos este parámetro, se reemplazan todas las apariciones.
tipo de concordancia: Es una cadena que nos permite refinar la expresión regular. Utiliza los siguientes caracteres posibles para realizar coincidencias.
Entendámoslo con varios ejemplos.
Ejemplo
La siguiente declaración explica el ejemplo básico de la función REGEXP_REPLACE en MySQL.
mysql> SET @str = 'Javatpoint is a great websites'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'great', 'an educational') AS 'Replaceable String';
Aquí está el resultado:
Supongamos que nuestra cadena de entrada contiene múltiples coincidencias dentro de la cadena , entonces esta función los reemplazará a todos. Vea las siguientes declaraciones:
significado de la comisión de selección de personal
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'PGDCA') AS 'Replaceable String';
Aquí está el resultado:
Si la cadena de entrada y la cadena reemplazable no coinciden, las declaraciones devuelven la cadena original. Vea el siguiente ejemplo:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'MBA', 'PGDCA') AS 'Resultant String';
Aquí está el resultado:
Si queremos reemplazar la cadena por especificando la posición Para iniciar el reemplazo, podemos usar la función REGEX_REPLACE de la siguiente manera:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2) AS 'Replaceable String';
En esta declaración, hemos especificado la posición como 2 para iniciar el reemplazo. Al ejecutar esta consulta, obtendremos el siguiente resultado donde podemos ver que la primera posición de la cadena reemplazable no se reemplaza.
Sabemos que todas las apariciones de la cadena coincidente se reemplazan de forma predeterminada. Sin embargo, también tenemos una opción para especificar la ocurrencia específica para reemplazar la cadena coincidente usando el ocurrencia parámetro. Vea el siguiente ejemplo:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2, 2) AS 'Replaceable String';
En este ejemplo, la posición inicial de la cadena reemplazable es 2 y apareció después de que comenzara la primera aparición. Por lo tanto, la ocurrencia 2 se convirtió en la ocurrencia 1 y la ocurrencia 3 se convirtió en la ocurrencia 2. Consulte el resultado a continuación:
Podemos proporcionar un parámetro adicional para refinar la expresión regular utilizando argumentos de tipo de coincidencia. Por ejemplo , podemos usarlo para verificar si la coincidencia distingue entre mayúsculas y minúsculas o incluye terminadores de línea. Vea el siguiente ejemplo donde especificamos un distingue mayúsculas y minúsculas y coincidencia que no distingue entre mayúsculas y minúsculas:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'bba', 'MCA', 1, 0, 'c') AS ' Case-Sensitive', REGEXP_REPLACE(@str, 'bba', 'MCA', 1, 0, 'i') AS ' Case-Insensitive';
Aquí está el resultado: