Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta de eliminacion complicada

Estas en el tema de Consulta de eliminacion complicada en el foro de Mysql en Foros del Web. Estimados, este es mi caso: Tengo una tabla de comercios con un campo llamado detalle. En ese campo se cargaron datos con formato (utilizaron el ...
  #1 (permalink)  
Antiguo 22/05/2013, 13:16
 
Fecha de Ingreso: mayo-2003
Mensajes: 523
Antigüedad: 20 años, 11 meses
Puntos: 6
Consulta de eliminacion complicada

Estimados, este es mi caso:
Tengo una tabla de comercios con un campo llamado detalle. En ese campo se cargaron datos con formato (utilizaron el editor Web TinyMCE). Es decir que además del texto están cargadas etiquetas HTML y nombres de clases CSS que le dan el formato a ese texto.
El operador cargó unos textos de color blanco utilizando una clase CSS llamada textos-blancos. Bueno lo que me piden es eliminar esos textos blancos del detalle de todos los comercios (son unos 3500).
Este sería un ejemplo de detalle de comercio:

<p><span class="textos-blancos">digital one productora centro <br /></span>Productora Integral de Imagen y Sonido.</p> <p>- Congresos.</p> <p>- Convenciones.</p> <p>- Eventos corporativos y sociales.</p>

Lo que marqué en rojo es lo que habría que eliminar. Estos textos blancos pueden estar antes o después del texto útil.

Realmente no se me ocurre cómo armar una consulta de eliminación SQL que pudiera hacer este trabajo. Si a alguien se le ocurre algo lo agradeceré mucho.

Última edición por Integer78; 22/05/2013 a las 13:40
  #2 (permalink)  
Antiguo 22/05/2013, 13:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta de eliminacion complicada


habría que probar algo como:
Código MySQL:
Ver original
  1. UPDATE tabla
  2. SET campo = REPLACE(campo, '<p><span class="textos-blancos">digital one productora centro <br /></span>Productora Integral de Imagen y Sonido.</p>', '');
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 22/05/2013, 15:07
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Consulta de eliminacion complicada

Tomas_Liendo,
Yo entiendo que no siempre el contenido será 'digital one productora centro'.
Si todos los registros tienen para ese campo la misma estructura y orden de datos y todos presentan esa etiqueta de clase una vez, te diría que primero probaras esta consulta

Código MySQL:
Ver original
  1. SELECT CONCAT( '<p>', SUBSTRING_INDEX( campo, '</span>', '-1' ) )
  2. FROM tabla
Si ves que sale lo que quieres en todos los registros mediante un repaso rápido,
a continuación creas un campo de paso del mismo tipo y tamaño llamado camponuevo. Luego lanzas esta consulta:

Código MySQL:
Ver original
  1. UPDATE tabla SET camponuevo = CONCAT( '<p>', SUBSTRING_INDEX( campo, '</span>', '-1' ) )

Compruebas que todo está bien fijándote también en el resultado obtenido en todos los registros. Si ves registros con ese camponuevo vacío, deberás hacer otra consulta para pasar los datos de los registros donde no haya '</span>', y luego si tienes todo bien, eliminas el campo antiguo y cambias el nombre de camponuevo al nombre del campo viejo.
  #4 (permalink)  
Antiguo 26/05/2013, 13:09
 
Fecha de Ingreso: mayo-2003
Mensajes: 523
Antigüedad: 20 años, 11 meses
Puntos: 6
Respuesta: Consulta de eliminacion complicada

gnzsoloyo tal cual como dice jurena el texto es variable en cada registro.
jurena: voy a probar con tus sugerencias luego les cuento como me fue.

Muchisimas gracias por la ayuda.

Etiquetas: campo, eliminacion, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:56.