Reemplazo por lotes de cadenas en MySQL: Guía de REPLACE y expresiones regulares

目次

Introducción

Si estás usando MySQL, a menudo encontrarás escenarios en los que necesitas «reemplazar cadenas específicas en una tabla de una sola vez» o «corregir datos incorrectos en lote». Por ejemplo, cuando las URLs en las descripciones de productos de un sitio de comercio electrónico cambian, o cuando quieres corregir errores de entrada anteriores en bloque, o estandarizar formatos (p. ej., convertir guiones en barras), el reemplazo de cadenas se vuelve esencial para muchas tareas.

Este artículo cubre a fondo métodos y técnicas prácticas para el reemplazo de cadenas en MySQL, desde lo básico hasta temas avanzados. Explicaremos el uso fundamental de la popular función REPLACE, junto con ejemplos del mundo real, formas de manejar eficientemente múltiples reemplazos y técnicas avanzadas utilizando expresiones regulares.

También abordaremos las diferencias en las funciones disponibles entre versiones de MySQL, precauciones para evitar la pérdida de datos por errores, consideraciones de rendimiento y otros consejos prácticos que son realmente útiles en el campo.

Leer este artículo te ayudará a resolver todas las siguientes preguntas e inquietudes.

  • ¿Cómo puedo reemplazar fácilmente cadenas específicas en MySQL?
  • ¿Qué pasa si quiero reemplazar múltiples patrones a la vez?
  • ¿Es posible un reemplazo flexible utilizando expresiones regulares?
  • ¿Cuáles son los riesgos y precauciones al actualizar grandes cantidades de datos de una sola vez?
  • ¿Cuáles son los métodos de respaldo para prevenir fallos?

Esta es la guía perfecta para principiantes y profesionales que quieren dominar el reemplazo de cadenas en MySQL con confianza.

Fundamentos del Reemplazo de Cadenas en MySQL (Función REPLACE)

Cuando quieres reemplazar cadenas en MySQL, la más usada es la función REPLACE. La función REPLACE busca patrones específicos en la cadena o cadenas indicadas dentro de columnas y los reemplaza todos de una sola vez por otra cadena.
Esta función es útil en diversas situaciones, como correcciones diarias de datos y conversiones por lotes a gran escala en bases de datos.

Sintaxis Básica de la Función REPLACE

REPLACE(original string, search string, replacement string)
  • Cadena original : La cadena que se va a reemplazar, o el nombre de la columna de la tabla.
  • Cadena de búsqueda : La parte que se va a reemplazar.
  • Cadena de reemplazo : La nueva cadena que se insertará.

Por ejemplo, se utiliza de la siguiente manera.

SELECT REPLACE('I love MySQL!', 'MySQL', 'PostgreSQL');

Esta consulta busca la palabra «MySQL» en la cadena «I love MySQL!» y la reemplaza por «PostgreSQL», resultando en «I love PostgreSQL!».

Sobre la Sensibilidad a Mayúsculas y Minúsculas

La función REPLACE distingue entre letras mayúsculas y minúsculas al buscar y reemplazar. Por ejemplo, «mysql» y «MySQL» se tratan como diferentes.
Si la cadena objetivo no se encuentra, la cadena original se devuelve tal cual.

Tipos de Datos Compatibles

La función REPLACE puede usarse con columnas de tipo de datos de cadena básica como CHAR, VARCHAR, TEXT. Sin embargo, ten cuidado, ya que puede comportarse de manera inesperada con tipos de datos especiales como BLOB.

De esta forma, el gran atractivo de la función REPLACE es que es simple en formato y se puede usar de forma intuitiva.
A partir del siguiente capítulo, explicaremos ejemplos SQL reales utilizando esta función REPLACE y cómo aplicarla a datos de tabla.

Uso Básico y Ejemplos Prácticos

La función REPLACE es muy sencilla de usar, pero en escenarios del mundo real, a menudo necesitarás reemplazar cadenas en bloque dentro de columnas de la base de datos. Aquí, explicaremos operaciones básicas usando la función REPLACE y métodos para actualizar datos de tabla por lotes, junto con ejemplos SQL específicos.

Ejemplo Simple de Reemplazo de Cadena con SELECT

Esta es la forma más básica de realizar un reemplazo en una cadena específica.

SELECT REPLACE('Hello, mysql user!', 'mysql', 'MySQL');

Esta consulta reemplaza ‘mysql’ por ‘MySQL’, devolviendo ‘Hello, MySQL user!’.

Reemplazo Masivo de Valores de Columna de Tabla con UPDATE

A common method in practice is to replace strings in a specific table column all at once.
Para un ejemplo, si deseas actualizar todas las descripciones de productos que contienen el dominio antiguo ‘oldsite.com’ al nuevo dominio ‘newsite.com’, ejecuta el SQL a continuación.

UPDATE products
SET description = REPLACE(description, 'oldsite.com', 'newsite.com');

Este SQL reemplaza todas las instancias de ‘oldsite.com’ en la columna descripción de la tabla productos con ‘newsite.com’.

Notes on Execution

UPDATE using REPLACE is executed against all records, so there is a risk of unintentionally overwriting unexpected parts.
Before running it in a production environment, always take a backup and verify the operation in a test environment.

Limiting the Scope with the WHERE Clause

If you want to update only certain data, use the WHERE clause. For example, to target only products added from 2024 onward, write it like this.

UPDATE products
SET description = REPLACE(description, 'oldsite.com', 'newsite.com')
WHERE created_at >= '2024-01-01';

This approach allows you to prevent unnecessary data overwrites.

Understanding the basic usage of the REPLACE function will significantly improve the efficiency of your daily operations and data cleaning tasks.

Samples by Common Use Cases

The REPLACE function is invaluable in various situations where you might think, «Can this be replaced somehow?» Here, we introduce specific samples for each common use case.

1. Correcting Typos and Misspellings

For example, it’s convenient when you want to batch-correct common errors from data entry.

UPDATE users
SET profile = REPLACE(profile, 'htto://', 'http://');

This SQL batch-corrects parts that were mistakenly entered as ‘htto://’ to ‘http://’.

2. Batch Replacement of URLs or Domains

It’s particularly useful during website renewals or migrations when you need to collectively replace old domains with new ones.

UPDATE blog_posts
SET content = REPLACE(content, 'old-domain.jp', 'new-domain.jp');

3. Removing Unnecessary Spaces, Line Breaks, and Symbols

Even if unintended spaces or line break codes have crept into your data, you can remove them all at once with REPLACE.

UPDATE addresses
SET zipcode = REPLACE(zipcode, ' ', '');

The above example removes all spaces from postal codes. For line breaks, specify ‘n’ or ‘r’.

4. Standardizing Formats like Hyphen to Slash, Full-width to Half-width, etc.

You can easily standardize data formats with REPLACE.

UPDATE products
SET code = REPLACE(code, '-', '/');

If you want to batch-convert full-width characters to half-width, you can nest the REPLACE function multiple times.

5. Simultaneous Replacement of Multiple Patterns

To replace multiple patterns at once, nest the REPLACE functions.

UPDATE contacts
SET note = REPLACE(REPLACE(note, 'Corporation', 'Corp.'), 'Limited Company', 'Ltd.');

By writing it this way, you can batch-convert ‘Corporation’ and ‘Limited Company’ to their abbreviated forms.

The REPLACE function is a highly reliable tool that can streamline tasks requiring ‘a large number of corrections’ or that ‘are tedious to do manually’.

Advanced Techniques and Avoiding Troubles

The REPLACE function is highly convenient, but depending on how it’s used, unexpected issues can arise or more efficient operations can be achieved. Here, we explain practical advanced techniques and tips for preventing troubles.

1. Handling NULL Values

The REPLACE function returns NULL if the target column is NULL. As a result, data that wasn’t replaced as expected may remain. To reliably perform replacements including NULL values, combining it with the IFNULL function is effective.

UPDATE users
SET comment = REPLACE(IFNULL(comment, ''), 'bad_word', '***');

By doing this, even in the case of NULL, it’s treated as an empty string, and the replacement processing is applied.

2. Case-Insensitive Replacement

The REPLACE function distingue entre mayúsculas y minúsculas por defecto. Si deseas reemplazar ambos casos para el mismo contenido, es habitual combinarla con las funciones LOWER o UPPER para la verificación y realizar el reemplazo en dos pasos según sea necesario.

UPDATE articles
SET title = REPLACE(REPLACE(title, 'MySQL', 'MariaDB'), 'mysql', 'MariaDB');

3. Reemplazo multietapa para múltiples palabras (anidado de la función REPLACE)

Si deseas reemplazar múltiples patrones diferentes a la vez, anida las funciones REPLACE.

UPDATE logs
SET message = REPLACE(REPLACE(message, 'error', 'warning'), 'fail', 'caution');

4. Limitar el alcance del impacto con condiciones WHERE en UPDATE

En lugar de actualizar en bloque todos los datos, si deseas limitarlo solo a las filas necesarias, utiliza la cláusula WHERE.

UPDATE customers
SET email = REPLACE(email, '@oldmail.com', '@newmail.com')
WHERE registered_at >= '2023-01-01';

5. Realiza siempre copias de seguridad y verifica en un entorno de prueba

Las actualizaciones que utilizan la función REPLACE a menudo son difíciles de revertir, por lo que antes de ejecutarlas en el entorno de producción, asegúrate de hacer una copia de seguridad. Además, verificando exhaustivamente la operación con datos de muestra o en un entorno de prueba, puedes reducir significativamente los riesgos.

Al aplicar correctamente la función REPLACE, es posible realizar operaciones de reemplazo de cadenas más seguras y eficientes.

{«translated_html»: «

Reemplazo de cadenas usando expresiones regulares [MySQL 8.0 and Later Only]

En MySQL 8.0 y versiones posteriores, además de la función \»REPLACE\», ahora puedes realizar reemplazos avanzados usando expresiones regulares con la función REGEXP_REPLACE. Esto permite una coincidencia de patrones más flexible y una limpieza de datos complejos más eficiente.

Sintaxis básica de la función REGEXP_REPLACE

REGEXP_REPLACE(original_string, regex_pattern, replacement_string)

n Cadena original : La cadena o el nombre de columna que se va a reemplazar. n Patrón de expresión regular : El patrón a coincidir (por ejemplo, \»[0-9]{3}-[0-9]{4}\» etc.). n Cadena de reemplazo* : La nueva cadena a insertar. n

Ejemplo 1: Eliminación de guiones de los números de teléfono

Si deseas eliminar todos los guiones de los números de teléfono, etc., puedes escribirlo de la siguiente manera.

UPDATE usersnSET tel = REGEXP_REPLACE(tel, '-', '');n

Ejemplo 2: Estandarización de formatos de códigos postales

Las expresiones regulares también son convenientes cuando deseas estandarizar los códigos postales en varios formatos (por ejemplo, \»123-4567\» o \»1234567\»).

UPDATE addressesnSET zipcode = REGEXP_REPLACE(zipcode, '([0-9]{3})-?([0-9]{4})', '1-2');n

Esta sentencia SQL estandariza tanto \»1234567\» como \»123-4567\» al formato \»123-4567\».

Ejemplo 3: Eliminación de caracteres no alfanuméricos

También se puede usar cuando deseas eliminar todos los caracteres no alfanuméricos de los datos de una sola vez.

UPDATE recordsnSET code = REGEXP_REPLACE(code, '[^a-zA-Z0-9]', '');n

Escribirlo de esta forma eliminará todos los caracteres que no sean alfanuméricos de la columna de código.

Cómo comprobar la versión

La función REGEXP_REPLACE solo está disponible en MySQL 8.0 y versiones posteriores. Puedes comprobar la versión de MySQL que estás usando actualmente con la siguiente consulta.

SELECT VERSION();n

Si utilizas una versión más antigua, como la serie 5, REGEXP_REPLACE no está disponible, así que considera usar la función REPLACE o el reemplazo en el lado de la aplicación. El reemplazo usando expresiones regulares es muy poderoso cuando los patrones de datos son diversos o se requieren transformaciones complejas.

«} }

Comparación con otras funciones de manipulación de cadenas y notas adicionales

MySQL proporciona múltiples funciones convenientes para la manipulación de cadenas. Dado que cada una tiene usos y características diferentes, es importante seleccionar la función óptima al realizar reemplazos o tareas de edición. Aquí explicaremos las funciones comúnmente utilizadas, como \»REPLACE\», \»REGEXP_REPLACE\», \»INSERT\» y \»CONCAT\», mientras las comparamos.

1. REPLACE

  • Usos : Reemplaza las partes que coinciden exactamente en la cadena o columna especificada con otra cadena.
  • Características : Distingue entre letras mayúsculas y minúsculas, y es la más conveniente para reemplazos simples.
  • Ejemplo :
  SELECT REPLACE('cat and dog', 'cat', 'fox');
  -- → "fox and dog"

2. REGEXP_REPLACE (MySQL 8.0 y posteriores)

  • Usos : Reemplaza las partes que coinciden con un patrón de expresión regular de una vez.
  • Características : Es potente para el reconocimiento de patrones complejos, reemplazo simultáneo de múltiples patrones, y extracción parcial o edición.
  • Ejemplo :
  SELECT REGEXP_REPLACE('a123b456c', '[a-z]', '');
  -- → "123456"

3. INSERT

  • Usos : Inserta otra cadena sobrescribiendo una longitud especificada a partir de una posición determinada.
  • Características : Adecuado para reemplazos parciales o inserción de datos, pero orientado más a la inserción y sobreescritura que al reemplazo puro.
  • Ejemplo :
  SELECT INSERT('abcdef', 2, 3, 'XYZ');
  -- → "aXYZef"

4. CONCAT

  • Usos : Concatena múltiples cadenas o contenidos de columnas.
  • Características : Se utiliza cuando se conectan cadenas entre sí, en lugar de para reemplazo o edición.
  • Ejemplo :
  SELECT CONCAT('abc', '123');
  -- → "abc123"

5. SUBSTRING / LEFT / RIGHT

  • Usos : Extrae una porción de una cadena.
  • Características : Es óptimo para extracción parcial o recorte de datos.
  • Ejemplo :
  SELECT SUBSTRING('abcdef', 2, 3);
  -- → "bcd"

Tabla de Comparación Simple

Aspecto

Reemplazo

Reemplazo con expresiones regulares

Inserción/Sobrescritura

Concatenation

Extracción parcial

Función

REPLACE

REGEXP_REPLACE

INSERT

CONCAT

SUBSTRING etc.

Soporte de patrones

× (solo coincidencia exacta)

○ (Soporte de expresiones regulares)

×

×

×

Version

All versions

8.0 o posterior

All versions

All versions

All versions

De esta forma, al seleccionar la función adecuada según el caso de uso y la versión, puede manipular los datos de forma más eficiente y segura.

Rendimiento y Precauciones

Al realizar reemplazos masivos de cadenas en MySQL, pueden surgir problemas inesperados o degradación del rendimiento, especialmente con tablas que contienen grandes volúmenes de datos o en entornos de producción. Aquí explicamos las precauciones y los puntos de rendimiento para trabajar de forma segura y eficiente.

1. Tener cuidado con las actualizaciones masivas en datos grandes

Las sentencias UPDATE que utilizan REPLACE o REGEXP_REPLACE escanean y reescriben todos los registros de la tabla objetivo, por lo que con volúmenes de datos grandes, el tiempo de ejecución se alarga y la carga del servidor aumenta. Especialmente en tablas con decenas de miles a millones de registros, los tiempos de respuesta de otras consultas pueden retrasarse durante la ejecución, y en el peor de los casos, pueden ocurrir bloqueos o timeouts.

2. Impacto en los índices

Si los valores en columnas indexadas (por ejemplo, correo electrónico, código) cambian debido a una sentencia UPDATE, se produce la reconstrucción del índice. Esto puede afectar el rendimiento, así que tenga cuidado. Para prevenir reescrituras innecesarias, es importante limitar siempre los datos objetivo con una cláusula WHERE.

3. Utilizando transacciones y reversión

Al reescribir grandes cantidades de datos de una vez, el uso de transacciones le permite revertir (rollback) si ocurre un error o un reemplazo inesperado.

START TRANSACTION;
UPDATE users SET comment = REPLACE(comment, 'A', 'B') WHERE ...;
-- If no issues
COMMIT;
-- If any issues arise
ROLLBACK;

Al hacer esto, puede trabajar con tranquilidad.

4. Siempre realice una copia de seguridad en entornos de producción

Al realizar actualizaciones masivas a gran escala, siempre realice una copia de seguridad antes. Incluso si ocurre una corrupción o pérdida de datos inesperada, puede restaurar desde la copia de seguridad.

5. El procesamiento por lotes y la ejecución dividida también son efectivos

Si el número de registros a procesar es muy grande, en lugar de actualizar todos a la vez, se recomienda procesar en lotes usando la cláusula LIMIT o ejecutar durante horarios de menor carga, como la noche cuando la carga del servidor es baja.

UPDATE logs
SET message = REPLACE(message, 'error', 'info')
WHERE id BETWEEN 1 AND 10000;

Al proceder en etapas como esta, puede distribuir la carga del servidor.

Al realizar reemplazos de cadenas teniendo en cuenta el rendimiento y la seguridad, puede lograr tanto eficiencia empresarial como prevención de problemas.

Estudios de Caso: Ejemplos de Uso Práctico en Operaciones Reales

En esta sección, presentaremos dos ejemplos prácticos de uso de “reemplazo de cadenas” que son útiles en tareas empresariales reales. Ambos son escenarios comunes en operaciones diarias y mantenimiento de datos. Junto con las consultas reales, explicaremos el flujo de trabajo y las precauciones.

Caso 1: Corrección masiva de URLs en los campos de descripción del producto

Este es un caso típico de un sitio de comercio electrónico donde, debido a un rediseño del sitio, deseas reemplazar en bloque la URL antigua (old-shop.com) que aparece en todos los campos de descripción de producto por la nueva URL (new-shop.jp).

Procedimiento de ejemplo:

  1. Haz una copia de seguridad de la tabla de productos antes de comenzar el trabajo.
  2. Filtra los datos objetivo usando una cláusula WHERE o similar (se recomienda ejecutar una prueba).
  3. Ejecuta la sentencia UPDATE para realizar la corrección masiva.

Ejemplo SQL real:

UPDATE products
SET description = REPLACE(description, 'old-shop.com', 'new-shop.jp');

Precauciones:

  • Realiza siempre una copia de seguridad y verificación en un entorno de prueba antes de aplicar a producción.
  • Considera los casos en los que puede haber espacios o saltos de línea antes o después de la URL, y evalúa también la posibilidad de usar sustitución con expresiones regulares (REGEXP_REPLACE).

Caso 2: Estandarización de formatos de datos del cliente

El reemplazo de cadenas también es útil para estandarizar formatos como números de teléfono o códigos postales en una base de datos de clientes. Por ejemplo, para eliminar guiones de todos los números de teléfono y convertirlos en dígitos consecutivos, usa una consulta como la siguiente.

Ejemplo SQL real:

UPDATE customers
SET tel = REPLACE(tel, '-', '');

Además, con MySQL 8.0 y versiones posteriores, es posible realizar correcciones de formato más flexibles usando expresiones regulares.

Ejemplo de uso de expresiones regulares (Estandarizar códigos postales a formato “123-4567”):

UPDATE customers
SET zipcode = REGEXP_REPLACE(zipcode, '([0-9]{3})-?([0-9]{4})', '1-2');

Precauciones:

  • Verifica exhaustivamente que los resultados de la sustitución sean los esperados antes de aplicarlos a datos de producción.
  • Si el alcance del impacto es amplio, reduce paso a paso los objetivos de actualización usando cláusulas WHERE.

Como se muestra en estos estudios de caso, el reemplazo de cadenas de MySQL puede ser muy aprovechado para mantener grandes volúmenes de datos o realizar limpiezas de datos periódicas. Al realizar una copia de seguridad completa y una preverificación cada vez que realices el trabajo, puedes prevenir fallos y problemas de antemano.

Resumen y lista de tareas

Hasta este punto, hemos explicado en detalle cómo reemplazar cadenas en MySQL, desde los fundamentos hasta aplicaciones avanzadas y ejemplos prácticos. Finalmente, resumiremos los puntos clave del artículo y proporcionaremos una lista de verificación útil cuando se proceda realmente al trabajo.

Puntos clave

  • La función REPLACE es ideal para un reemplazo masivo de cadenas simple. Diferencia mayúsculas de minúsculas y solo funciona con coincidencias exactas.
  • La función REGEXP_REPLACE (MySQL 8.0 y posteriores) permite reemplazo avanzado de patrones usando expresiones regulares.
  • El reemplazo masivo usando sentencias UPDATE es conveniente, pero las copias de seguridad y la verificación en un entorno de prueba son esenciales.
  • Para el reemplazo simultáneo de múltiples patrones, anidar la función REPLACE es eficaz.
  • Asegúrate de prestar suficiente atención al impacto en el rendimiento, a los efectos sobre los índices y a la carga del servidor durante el procesamiento de grandes volúmenes de datos.

Lista de tareas

  • □ ¿Has identificado con precisión los patrones a reemplazar y las columnas objetivo?
  • □ ¿Estás reduciendo la actualización solo a los datos necesarios mediante cláusulas WHERE, etc.?
  • □ Antes de aplicar a producción, ¿has realmente realizado una copia de seguridad?
  • □ ¿Has verificado la operación real de la consulta en un entorno de prueba o con datos ficticios?
  • □ ¿Tienes un plan para utilizar procesamiento por lotes o cláusulas LIMIT según el volumen de datos y la carga del servidor?
  • □ Después del trabajo, ¿has confirmado suficientemente que los resultados del reemplazo son los esperados?
  • □ ¿Estás seleccionando la función adecuada según la versión de MySQL que estás utilizando?

Al proceder con el trabajo de acuerdo a esta lista de verificación, puedes realizar de manera segura y confiable la sustitución de cadenas en MySQL.
La sustitución de cadenas puede provocar fácilmente problemas mayores a partir de errores operativos menores, así que asegúrate de revisar cuidadosamente cada punto uno por uno antes de aplicarlo en producción.

Preguntas Frecuentes (FAQ)

En esta sección, hemos compilado preguntas comunes y puntos de duda que muchas personas tienen sobre “sustitución de cadenas en MySQL”, así como preguntas frecuentes del campo. Utilízalo para resolver cualquier confusión o preocupación durante tus operaciones.

Q1. ¿REPLACE() distingue entre mayúsculas y minúsculas?

A1: Sí, la función REPLACE distingue entre mayúsculas y minúsculas (sensible a mayúsculas). Por ejemplo, «mysql» y «MySQL» se tratan como cadenas distintas. Si deseas sustituir ambas al mismo tiempo, necesitarás anidar la función REPLACE dos veces o utilizar alguna otra técnica.

Q2. ¿Qué sucede si lo uso en una columna con valores NULL?

A2: Si la columna objetivo es NULL, el resultado de REPLACE también será NULL y no habrá cambios. Si deseas sustituir también los valores NULL, utilízalo en combinación con la función IFNULL.

Q3. ¿Puedo sustituir múltiples patrones a la vez?

A3: Sí, puedes anidar la función REPLACE para sustituir múltiples patrones simultáneamente. Sin embargo, el resultado puede variar según el orden de las sustituciones, así que verifica de antemano que funcione como esperas.

Q4. ¿Qué hago si quiero sustituir usando expresiones regulares?

A4: Puedes usar la función REGEXP_REPLACE, disponible en MySQL 8.0 y posteriores, para sustituir partes que coincidan con un patrón de expresión regular. Si tu versión es más antigua, considera realizar la sustitución en el lado de la aplicación o usar otros métodos.

Q5. ¿Cuál es la diferencia con REPLACE INTO?

A5: La función REPLACE realiza una «sustitución de cadenas», mientras que REPLACE INTO es una sentencia SQL de tipo INSERT que «elimina registros existentes e inserta nuevos». Tienen propósitos totalmente distintos, así que ten cuidado de no confundirlos.

Q6. ¿Puedo revertir los datos a su estado original después de la sustitución? (Método de recuperación)

A6: Una vez ejecutada la sustitución, suele ser difícil revertir los datos a su estado original. Siempre realiza una copia de respaldo antes de efectuar la operación. Si algo sale mal, restaura desde la copia de seguridad.

Q7. ¿Cómo comprobar la versión de MySQL?

A7: Puedes comprobar la versión de MySQL ejecutando la siguiente consulta.

SELECT VERSION();

Verifica la versión con antelación para ver si funciones como REGEXP_REPLACE están disponibles.

Consulta estas preguntas frecuentes y continúa con tus tareas de sustitución de cadenas con confianza.

Enlaces y Referencias Relacionados

Para profundizar en tareas de sustitución de cadenas o ampliar tus conocimientos de SQL, es útil usar la documentación oficial y recursos técnicos confiables. También presentaré artículos relacionados y herramientas útiles, así que siéntete libre de consultarlos.

1. Documentación Oficial de MySQL

2. Ejemplos Prácticos de la Función REGEXP_REPLACE

4. Si Quieres Aprender SQL Desde lo Básico