Reemplazar texto con caracteres extraños en MySQL
Bienvenidos a VerTutoriales.com, en esta ocasión vamos a ver como realizar un reemplazo de texto dentro de mysql, en mi caso fué un problema a la hora de migrar la base de datos que la codificación me la cambió a la hora de importar y exportar y una vez puesta la base de datos en producción denuevo no pude realizar la copia correctamente con su juego de caracteres para que no saliera con esos caracteres raros, así que averiguandolo, encontré la consulta exacta para esta labor.
La consulta de actualización para reemplazar el texto es muy sencilla, por razones obvias se ha de realizar tantas veces como simbolos raros queramos cambiar. Veamos:
update tabla set campo = replace(campo, 'ñ', 'ñ'); update tabla set campo = replace(campo, 'á', 'á'); update tabla set campo = replace(campo, 'ó', 'ó'); update tabla set campo = replace(campo, 'Ã', 'í'); update tabla set campo = replace(campo, 'íº', 'ú'); update tabla set campo = replace(campo, 'í©', 'é'); update tabla set campo = replace(campo, 'ú', 'ú'); update tabla set campo = replace(campo, 'í‘', 'Ñ');
Así de simple, si quisierais reemplazar más letras o simplemente un texto cualquiera podeis simplemente cambiar la función replace(), teniendo en cuenta que recibe tres parámetros, el primero es el campo que que quereis cambiar, el segundo lo que buscará, y el tercero por lo que lo cambiará.
¿Para qué lo habeis necesitado?
Un saludo!
Comments
realmente la solucion mas sencilla que he encontrado, con el phpmyadmin he solucionado los caracteres raros en un 5 minutos..
Supongo que al realizar alguna migración te habrá ocurrido algo parecido, ¿no?
Me alegro que te haya funcionado, a mi me ha salvado de algún que otro problema después de cambiar de servidor. Quizás cambiar los símbolos extraños o “raros” de esta forma en la base de datos no sea lo más óptimo, pero si es verdad que es rápido 😉
Gracias por el comentario! Salud!
Extraordinario me fue de gran ayuda
Me alegro! hay que tener en cuenta la codificación de la base de datos para que los caracteres y letras no salgan con símbolos “raros”
Un saludo!
Gran dato muchas gracias!!! De verdad me salvaste de un gran problema!.
Para terminar y completar esta genial ayuda.. cual sería el reemplazo para el caracter ¡
Nuevamente Gracias!!
Buenas Ricardo, me alegro de que te ayudara. (aunque sea en parte)
Con respecto a tu pregunta, los caractéres que saqué, fueron por deducción, teniendo en cuenta que eran palabras con acentos y demás, conocía la letra que iba en el lugar del símbolo “extraño”, supongo que podrás hacerlo de igual manera, donde va el símbolo ¡ tendrá que ir una letra, utiliza el contexto de la frase a ver si así lo averiguas, si lo haces, pásate por aquí para compartirlo 😉
Gracias!
muy bueno gracias amigo
Nada, me alegro de que te sirviera.
Bueno, es mejorable… Con eso sólo consigues reemplazar caracteres en minúscula. Sería interesante hacerlo también para las mayusculas, euro, eñes, interrogación de apertura, letras con diéresis, etc.
He perparado un script en PHP que conecta con la base de datos y se encarga de convertirlo todo, pero tengo un pequeño problema… ¿cómo diferenciar Á e í cuando ambos son exactamente el mismo caracter -> Ã ?
Un saludo,
Bueno, lo más sencillo sería cambiar la codificación a la hora de hacer cualquier importación o cambio. Si no fuera posible, la única posibilidad que se me ocurre, es que se hagan algunas condicionales, por ejemplo saber si la letra está entre otras letras, será minúscula, si está detrás de un punto será Mayúscula, la única pega que encuentro es que sea un nombre propio, pero será una pequeña excepción.
Un saludo!
Sencillamente excelente, simple pero eficaz hermano, gracias por compartir, me has ahorrado una gran cantidad de tiempo.
Nada! Problemas que ya resolví y que a otros les puede ayudar en el camino! Hoy mismo he estado codificando en base64 en MySQL para resolver una problemática de importación por espacios, puntos y coma ; y saltos de línea que rompían el CSV!
Si tengo un rato lo documento!
Salud!