Ver Mensaje Individual
  #6 (permalink)  
Antiguo 22/10/2013, 01:52
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Eliminar Parte del Contenido de una Tabla

Con programación, pero debes hacerlo con cuidado primero sobre un copia de la base para probar.
Deja además otra copia de la base por si ocurre algo extraño durante el proceso. Por otra parte, no nos has dicho si tienes esas etiquetas en un solo campo de la base o en varios de ellos. Si tuvieras varios, el proceso que te contaré tendrías que aplicarlo a cada uno de esos campos.

haría una prueba sobre una copia de la base en local para ver el efecto.

I)
Imaginemos que tengo esas etiquetas en el campo llamado campoetiquetas dentro de la base.

1) Creo un campo nuevo con las mismas características que campoetiquetas y llamado campoetiquetas2, por ejemplo.
2) cargo todos los valores de campoetiquetas en campoetiquetas2
UPDATE nombrebase SET campoetiquetas2 = campoetiquetas
Y ya tengo en campoetiquetas2 todos los valores de campoetiquetas. Eso es para trabajar sobre seguro y no tocar de momento el campo campoetiquetas.

II) Ahora toca la parte de programación. Para eso tienes que hacer un script con tu programa. En este foro no podemos ayudarte en eso y tendrás que pedir ayuda en el foro de tu programa. Ya verás que es relativamente fácil. No obstante te daré algunas indicaciones a modo de orientación. Los pasos, tras la conexión a tu base de pruebas serían:
1) buscar todos los registros que tienen incluida en ese campo esa etiqueta o tag. Para eso una consulta como esta:
SELECT * FROM tutabla WHERE campoetiqueta2 LIKE '%<!--:en-->%'
con eso ya tendrás todos los registros en los que aparece al menos una etiqueta de ese tipo.

2) borrar de las variables las etiquetas y su contenido, y lanzar la consulta de actualización con los nuevos valores. Se trata de en cada paso del ciclo reemplazar por nada todo eso en cada uno de los registros. En los programas existen funciones para hacerlo. Por ej. en PHP la función preg_replace usando el patrón correspondiente, luego tienes que actualizar con el resultado de la operación el id correspondiente de cada registro. Tienes que hacer que el programa lance una consulta de actualización por cada registro que tenga esa etiqueta, es decir con el WHERE id = $id. Pide ayuda en el programa con el que trabajes y haz pruebas.

3) Para este punto ya no hace falta el script. Una vez lanzado el script, y mediante el recorrido de los datos y haciendo búsquedas específicas sobre ese campo campoetiquetas2 por si hubiera quedado algo de las etiquetas, compruebas que todo está como quieres (a veces quedan dos espacios en blanco seguidos y hay que dejarlos en uno; para eso basta con una consulta de actualización). Cuando todo está revisado y comprobado, puedes actualizar campoetiquetas con el valor de campoetiquetas2, y finalmente eliminar el campo campoetiquetas2. Y ya tendrás en campoetiquetas los valores como deseabas.

Pide ayuda en el foro de programación e indicaciones sobre qué expresión regular emplear para lo que quieres, es decir, borrar tanto las etiquetas como su contenido, pero aclarando que puede haber varias etiquetas dentro del mismo campo.