Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/05/2011, 15:42
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Reemplazar o borrar un "str" de un "str_list"

Hola mikexloo:

A estas horas de la tarde (4:30 pm en México) y con el estómago vacío no se me ocurren muchas cosas, pero prueba con esto;

Código MySQL:
Ver original
  1. mysql> create table tabla_find (texto varchar(50));
  2. Query OK, 0 rows affected (0.11 sec)
  3.  
  4. mysql> insert into tabla_find values ('4,6,1,9,18'), ('1,11,111,11111,100001'),
  5. ('21,31,41,51');
  6. Query OK, 3 rows affected (0.05 sec)
  7. Records: 3  Duplicates: 0  Warnings: 0
  8.  
  9. mysql> select * from tabla_find;
  10. +-----------------------+
  11. | texto                 |
  12. +-----------------------+
  13. | 4,6,1,9,18            |
  14. | 1,11,111,11111,100001 |
  15. | 21,31,41,51           |
  16. +-----------------------+
  17. 3 rows in set (0.00 sec)
  18.  
  19. mysql> update tabla_find set texto = substr(replace(concat(',', texto, ','), ',1
  20. ,', ','), 2, length(replace(concat(',', texto, ','), ',1,', ',')) - 2);
  21. Query OK, 2 rows affected (0.03 sec)
  22. Rows matched: 3  Changed: 2  Warnings: 0
  23.  
  24. mysql> select * from tabla_find;
  25. +---------------------+
  26. | texto               |
  27. +---------------------+
  28. | 4,6,9,18            |
  29. | 11,111,11111,100001 |
  30. | 21,31,41,51         |
  31. +---------------------+
  32. 3 rows in set (0.00 sec)

En el ejemplo estoy eliminando los 1's, para eliminar algún otro elemento lo único que tendrías que cambiar es esta intrucción:

Código:
replace(concat(',', texto, ','), ',1,', ',')
la idea que se me ocurrió es concatenar una coma al inicio y fin de la cadena y buscar justamente el elemento entre comas (,1,) y sustituirlo por una (,). Al final con el substring "recortas" la cadena para eliminar las comas del inicio y fin de la cadena. Seguramente hay alguna otra forma de hacer esto mismo, optimizando código, pero de primera es lo único que se me ocurre. Si encuentro alguna otra solución mañana la posteo.

Saludos
Leo.