[ Foro de SQL (y MySQL) ]

Modificar contenido base de datos

10-Mar-2018 10:11
Invitado (Juan)
3 Respuestas

Buenos días.

Tengo una web con Wordpress y me gustaría eliminar un contenido que se repite en todos los post

Tengo localizada la base de datos y lo que me gustaría es que todo lo que tenga este aspecto fuera eliminado o sustituido por un espacio en blanco.

<a  href="http://paginaweb.com/index.php?title=Categoría:Empresas">:Empresas</a>

<a  href="http://paginaweb.com/index.php?title=Categoría:Abogados">:Abogados</a>

<a  href="http://paginaweb.com/index.php?title=Categoría:Asesorías_jurídicas">:Asesorías jurídicas</a>

Etc....

Es decir... ¿Cómo puedo eliminar todo lo que tenga este aspecto?

<a  href="http://paginaweb.com/index.php?title=Categoría:*********">*********</a>

he creado una sentencia pero no es la correcta

UPDATE tabla set post_content= replace(post_content,'<a href="
http://dominio.com/index.php?title=%">%</a>','')

Cuando hago un SELECT le tengo que poner % al principio y al final. Si hago
eso en el update borraría todo el contenido de la celda.
SELECT * FROM wp5lprlw_posts WHERE post_content LIKE '%<a href="
http://dominio.com/index.php?title=%">%</a>%'

¿Alguien me puede echar una mano? muchas gracias de antemano


14-Mar-2018 01:16
Nacho Cabanes (+83)

Como bien dices, no puedes usar un % en el update, porque eso te obligaría a usar LIKE, y eso es razonable para obtener los datos, pero no para eliminar sólo un fragmento de ellos.

Posiblemente, lo menos peligroso y lo que además evita la complejidad de usar un programa en PHP o en PL/SQL, sería lanzar un update sencillo las 4 o 5 veces que sea necesario, una para cada categoría:

UPDATE tabla set post_content= replace(post_content,'<a  href="http://paginaweb.com/index.php?title=Categoría:Abogados">:Abogados</a>','')


14-Mar-2018 08:47
Invitado (Juan)

Buenos días.

Gracias por tu respuesta.

El problema es que tengo casi 200 categorías y me gustaría poder eliminarlas de un plumazo. La solución que me proporcionas sería la última solución.

¿Hay alguna forma de poder eliminarlas de golpe?

Saludos.


19-Mar-2018 00:59
Nacho Cabanes (+83)

No se me ocurre ninguna forma sencilla. Supongo que se podría conseguir de forma "no demasiado trabajosa" desde PL/SQL, creando un PROCEDURE que obtenga la lista de esas 200 categorías (usando por ejemplo un CURSOR) y entonces lance la orden UPDATE correspondiente para cada reemplazar cada una de ellas por una cadena vacía.

Hace años que no uso cursores, así que no te podré dar muchos más detalles, pero si tu Wordpress se apoya en MySQL, que es lo habitual, y nunca has usado cursores, puedes recurrir a la referencia oficial para ver algún ejemplo que quizá te dé pistas:

https://dev.mysql.com/doc/refman/5.7/en/cursors.html
 






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)